home *** CD-ROM | disk | FTP | other *** search
/ Total Network Tools 2002 / NextStepPublishing-TotalNetworkTools2002-Win95.iso / Archive / Misc Servers / Zope.exe / HISTORY.TXT < prev    next >
Encoding:
Text File  |  2000-11-17  |  123.4 KB  |  3,085 lines

  1. Zope history
  2.  
  3.   This file contains change information for previous versions of
  4.   Zope. Change information for the current release can be found
  5.   in the file CHANGES.txt.
  6.  
  7.     Zope 2.2.2
  8.  
  9.       Bugs Fixed
  10.  
  11.         - Applied Dieter Maurers patch to prevent log entries from 
  12.           being dropped when clients disconnect prematurely.
  13.  
  14.         - The manage_test method of database connection objects were 
  15.           not checking for RDB-format results, which caused the test 
  16.           queries to fail from the test tab of some older DAs.
  17.  
  18.         - Z2.py did not allow passing numeric UIDs for the -u option.
  19.  
  20.         - Fixed a bug in the dtml-var tag handling of the 'null'
  21.           attribute. Before null would only work correctly if there was
  22.           also a 'fmt' attribute. Now null correctly works with non-zero
  23.           false values when there isn't a 'fmt' option.
  24.  
  25.         - Corrected a factory bug that prevented creation of ZClass
  26.           instances within objects owned by users defined in a
  27.           different user folder than the root acl_users.
  28.  
  29.         - Made ZopeAttributionButton method of Application object 
  30.           public.
  31.  
  32.         - Factory dispatchers inappropriately acquired ownership in 
  33.           certain cases, causing problems creating objects for users 
  34.           not defined in the root user folder.
  35.  
  36.         - The DestinationURL method of FactoryDispatchers did not work
  37.           correctly if the dispatcher was obtained through the 
  38.           unrestrictedTraverse method.
  39.  
  40.         - Several calls to socket.bind() were fixed for Python 1.6/2.0
  41.           compatibility in PCGI and Gadfly.
  42.  
  43.         - The sqlvar tag could fail on the trailing 'L' of the string
  44.           representation of longs when coercing to int or float.
  45.  
  46.         - Under some circumstances, versions were only partially
  47.           committed (or aborted) in FileStorages causing objects to be
  48.           left locked in a version with no way to unlock them.
  49.  
  50.         - FileStorages opened read-only incorrectly truncated data
  51.           files when incomplete transactions were discovered.
  52.  
  53.         - Read transactions were aborted due to conflict errors.
  54.           This was an attempt to catch write conflicts early, but was
  55.           far too pessimistic.
  56.  
  57.         - The document_src method of DTML objects required a REQUEST
  58.           and RESPONSE argument, making it difficult to use from 
  59.           Python code. They are now optional.
  60.  
  61.         - The "test" tab of SQL Methods did not include the rendered 
  62.           query in the error message if the test failed due to a 
  63.           database-level error (such as a malformed query).
  64.  
  65.         - A signed/unsigned buglet in the code for Splitter objects 
  66.           caused recognition of national characters to fail on some 
  67.           platforms (FreeBSD/x86).
  68.  
  69.         - A bug in ZODB database objects could cause ZEO clients to
  70.           fail to start without deleting the ZEO client cache.
  71.  
  72.         - The 'lock' keyword argument to RESPONSE.redirect was not 
  73.           in the API documentation.
  74.  
  75.         - Some missing SCRIPT_NAME variables were added to the IMG
  76.           SRC paths for the navigator pane.
  77.  
  78.     Zope 2.2.1
  79.  
  80.       Bugs Fixed
  81.  
  82.         - Correction of ZClass-in-ZClass bugfix which prevented import of
  83.           .zexp's containing Factories.
  84.  
  85.         - Made acquisition in the URL and XML-RPC work together.
  86.  
  87.         - A bug in FTP downloading was fixed.
  88.  
  89.         - A bug in the "views" screen for ZClasses could cause strange 
  90.           IndexErrors depending upon whether help topics were created.
  91.  
  92.         - Improved behavior when non-persistent objects are added to an
  93.           ObjectManager.
  94.  
  95.         - Fixed an obscure bug that could cause Zope to crash when
  96.           there were errors in computed attributes that depended on
  97.           acquisition.
  98.  
  99.         - Fixed very obscure bug in database invalidation when
  100.           committing from one version to another. This could cause
  101.           source version data to fail to get updated.
  102.  
  103.         - Fixed a condition that prevented error messages from
  104.           being displayed when performing a redirect.  This means
  105.           that standard_error_message documents that redirect now
  106.           need to add a "lock=1" argument to the redirect call.
  107.  
  108.         - A bug in the stupid file logger consumed exception info
  109.           for certain types of errors (such as failed product import).
  110.  
  111.         - A bug in integration with the new security machinery caused 
  112.           copy / paste operations to fail in certain cases.
  113.  
  114.         - Changed permission assignments for 'manage_editForm', 'manage',
  115.           'manage_main', 'manage_uploadForm', 'manage_historyCopy',
  116.           'manage_beforeHistoryCopy' and 'manage_afterHistoryCopy' to 
  117.           'Change DTML Documents' (for DTML Documents) and 'Change 
  118.           DTML Methods' (for DTML Methods) which is more correct and 
  119.           makes view filtering work properly.
  120.  
  121.         - The medusa code that produced the server log file was writing 
  122.           the formatting the date in GMT but adding a local timezone 
  123.           identifier (+0100, etc.) It has been fixed to format the date 
  124.           using localtime.
  125.  
  126.         - The DTML "tree" tag did not understand the common shorthand 
  127.           spellings for name= and expr=.
  128.  
  129.         - The HTML4 formatting method on DateTime objects did not return 
  130.           the datetime in UTC as it was supposed to.
  131.  
  132.         - A bug in cgi.py caused an entire extra copy of large file 
  133.           uploads and input data to be kept in memory, defeating the 
  134.           work the module does to avoid doing exactly that ;^)
  135.  
  136.         - A bug in the cgi module could cause memory to spike on large 
  137.           inputs, as it kept a complete copy of the input in memory 
  138.           that was never used :(
  139.  
  140.         - A packing bug could cause data written by saved versions
  141.           to be inaccessible. This is actually a bug that was fixed
  142.           in Zope 2.1, but the fix never got applied to the main code
  143.           tree. :(
  144.  
  145.         - The behavior of the tag and __str__ methods of images has 
  146.           changed slightly; if no 'alt' argument is given, it will use 
  147.           the title of the image (if defined) for the alt attribute. 
  148.           Otherwise it will generate 'alt=""'. Also, it now generates 
  149.           'border="0"' unless a different value for border is given as 
  150.           a keyword argument.
  151.  
  152.         - The database control screen in the control panel did not
  153.           work with storages that returned string "sizes". Some
  154.           storages return strings to indicate units other than bytes.
  155.  
  156.         - Fixed the broken Product Help icon.
  157.  
  158.         - Fixed ZClass view help setting, thanks to Jeff Sasmor.
  159.  
  160.     Zope 2.2.1 beta 1
  161.     
  162.       Bugs Fixed
  163.  
  164.         - FileStorage-based databases became corrupted when their 
  165.           size grew beyond 2GB.
  166.  
  167.         - FileStorage-based databases could be corrupted if
  168.           transaction descriptions or transaction extended meta-data
  169.           exceeded 64KB in size.
  170.  
  171.         - Some relational database adapters use an older version of 
  172.           a results class in Shared.DC.ZRDB. The RDB-format based 
  173.           results class was missing a needed security assertion to 
  174.           allow access to result data.
  175.  
  176.         - Missing security assertions in the ZDOM module caused 
  177.           unauthorized errors for things trying to use ZDOM (such 
  178.           as XMLDocument).
  179.  
  180.         - A bug in the registration of help content caused unnecessary 
  181.           transactions to be written at startup.
  182.  
  183.         - The machinery for guessing content types ignored default 
  184.           values passed in explicitly.
  185.  
  186.         - A problem in the Find machinery removed the acquisition 
  187.           context from subobjects, causing permission checking to 
  188.           fail.
  189.  
  190.         - There was a hard-coded unix path separator in the logic 
  191.           for initializing special dtml objects from files.
  192.  
  193.         - The ordering of tabs on some management screens was changed 
  194.           inadvertantly during the 2.2 development cycle. The ordering 
  195.           has been tweaked to conform more closely to earlier releases.
  196.  
  197.         - The strftime() method of DateTime objects was changed so that 
  198.           it formats based on the current timezone representation of a 
  199.           given DateTime object. This is now also the case when formatting 
  200.           DateTimes from DTML using the fmt="..." construct (which uses 
  201.           the strftime method under the hood). Previously, strftime 
  202.           converted to GMT, which was inconsistent with other formatting 
  203.           methods and caused problems for people. Those who actually do 
  204.           want the date to be formatted in GMT can use: myDate.toZone('GMT') 
  205.           to get a version of the object represented in GMT and then call 
  206.           the formatting methods on that object.
  207.  
  208.         - Permissions were not properly defined for the new history
  209.           vew in DTMLMethods and DTMLDocuments.  This caused many
  210.           useful features to be available only to managers and others
  211.           to be available only to those with undo priveledges.  A new
  212.           permission, "View History" has been added for viewing
  213.           historical changes and you can copy historical versions to
  214.           the present if yo can edit DTMLDocuments or DTMLMethods.
  215.  
  216.         - The new traversal method, restrictedTraverse was private, 
  217.           but should have been public. It also didn't check access to
  218.           the root object when an absolute path was used.
  219.  
  220.         - The roles (and only the roles) "Manager" and "Anonymous"
  221.           had the "Access contents information" permission on the root
  222.           application object regardless of permission settings made
  223.           through the management interface.
  224.  
  225.         - A ZCatalog bug which was symptomized by a "KeyError" during a
  226.           searchResults query was squished by changing some exception
  227.           handling in the cataloging machinery.
  228.  
  229.         - Version's chose their names based on absolute_url, which depends
  230.           on access method, rather than physical path.
  231.  
  232.         - A fix for socket.connect() calls in preparation for Python 2.0 was 
  233.           accidentally applied to a wrong part of Client.py in ZPublisher.
  234.  
  235.         - The "distribution" tab for ZClass-based products has been changed
  236.           to allow creation of redistributable products.
  237.  
  238.         - DAV property sheets were not correctly associated with permissions, 
  239.           which cause Unauthorized errors when iterating over propertysheets 
  240.           under the new security model.
  241.  
  242.         - Some patches to PCGI added in the 2.2 development cycle to support 
  243.           things like syslog connectivity were backed out due to problems 
  244.           on certain platforms. The patches may make it back in the future 
  245.           after the issues are resolved and broader platform testing can 
  246.           be done.
  247.  
  248.         - The new security machinery did not allow REQUEST to be accessed
  249.           when it was acquired. This didn't prevent access to REQUEST, but
  250.           made the access eccessively expensive.
  251.  
  252.         - Fixed the display order of the Zope tutorial topics.
  253.  
  254.         - Fixed the help system menu frame to not use standard html
  255.           header and footer.
  256.  
  257.         - Products that have not been updated to define an 'initialize' 
  258.           method to do product initialization were not filtered correctly 
  259.           by permission in the filtered object add list.
  260.  
  261.         - Exception logging was added to catalog to catch "shouldnt happen"
  262.           sorts of events.
  263.  
  264.         - Text indexes did not recognize boolean connectives (and, not) 
  265.           if they were mixed-case.
  266.  
  267.         - Fixed Tutorial bug that caused win98 to crash with adding a
  268.           tutorial.
  269.  
  270.         - Fixed ZService.py to avoid overwriting existing service start 
  271.           parameters at install time on win32.
  272.  
  273.         - The deprecated alias getSize() was added back to Image and DTML
  274.           objects (existing products still depend on it).
  275.  
  276.         - Cleaned up a DocumentTemplate namespace issue.  Fixed QuickStart.
  277.  
  278.         - Removed old validation code in cDocumentTemplate.
  279.  
  280.         - In ZCatalog, it was possible for stemming on single-word search 
  281.           queries to be handled incorrectly and produce no results.
  282.  
  283.         - A problem in the url traversal machinery caused strange errors 
  284.           in cases where the root of the site was requested but had no 
  285.           index_html instead of the expected Not Found error.
  286.  
  287.         - ZCatalog objects did not implement the searchable object 
  288.           interface correctly.
  289.  
  290.         - XML (database) import sometimes failed, especially with
  291.           ZClass instances.  
  292.  
  293.         - XML (database) export didn't properly handle strings that contained
  294.           the string "\n".
  295.  
  296.         - The <base> tag insertion machinery failed if the request result 
  297.           had content-type with a charset attribute (thanks to Dieter 
  298.           Maurer).
  299.  
  300.         - A long-standing bug that caused a "resource not found" error when 
  301.           trying to instantiate a ZClass inside of another ZClass was 
  302.           fixed. Hooray for Chris McDonough :^)
  303.  
  304.         - In certain circumstances it was possible for the manage_afterAdd 
  305.           and other manage_after* methods to get into an infinite loop by 
  306.           essentially acquiring themselves in cases where subobjects did 
  307.           not implement those protocols.
  308.  
  309.         - The sqlvar tag produced misleading error messages when an 
  310.           expression caused an exception during rendering.
  311.  
  312.         - RFC1123 dates were not formatted correctly in the webdav.client 
  313.           implementation.
  314.  
  315.         - Made the ObjectManager class inherit from Traversable (which
  316.           exposes unrestrictedTraverse).  ObjectManager-type items which
  317.           didn't inherit from SimpleItem.Item had problems with 
  318.           Management.Tabs producing the right views for manage_options
  319.           before this was in there.
  320.  
  321.         - FileStorage-based databases got into an unusable state if
  322.           available disk space was exceeded.  This problem could
  323.       lead to database corruption.
  324.  
  325.     Zope 2.2.0
  326.     
  327.       Bugs Fixed
  328.  
  329.         - The add form for MailHost objects described fields that are 
  330.           no longer needed (descriptions have been removed).
  331.  
  332.         - User databases did not correctly handle situations where a 
  333.           browser sends an authentication token naming a user that 
  334.           can't be found while accessing a publicly available resource.
  335.  
  336.         - Minor bug in ZCatalog which prevented deletion of indexes fixed.
  337.  
  338.         - XML-RPC requests could not be completed via https.
  339.  
  340.         - Several uses of multi-argument append() calls (that will be 
  341.           illegal in Python 2.0) were fixed.
  342.  
  343.         - The UNLOCK method for DAV support was missing some needed 
  344.           argument declarations.
  345.  
  346.     - Corrected some error handling in the database connection code.
  347.  
  348.         - Fixed support for strftime day-of-week formatting in DateTime.
  349.  
  350.         - Fixed Image content-type detection to also use the binary 
  351.           "nonces" in the file to determine the real content-type.  This
  352.           should catch GIF/JPEG/PNGs that are uploaded without the correct
  353.           information associated with them.
  354.  
  355.         - Added missing permission declarations to make the methods of 
  356.           PropertySheets objects accessible.
  357.  
  358.     Zope 2.2.0 beta 4
  359.     
  360.       Bugs Fixed
  361.  
  362.         - The History tab is now protected by the 'Undo changes' permission,
  363.           and setting this permission actually has effect now.
  364.  
  365.         - A bug in validation in filtered_manage_tabs made tabs misbehave 
  366.           in some cases.
  367.  
  368.         - Fix an AttributeError bug in the Lexicon objects used by ZCatalog.
  369.  
  370.         - FileUpload objects did not have the required security assertion
  371.           to allow access to attributes such as filename and headers.
  372.  
  373.         - Broken objects weren't deletable due to a recent change in the
  374.           object deletion logic added to support mountable databases.
  375.  
  376.         - Some formatting bugs in the status method of the ZServer HTTP 
  377.           server were fixed (thanks to Jeff Rush).
  378.  
  379.         - The _read_data method of Image and File objects didn't correctly 
  380.           handle being passed an actual file object.
  381.  
  382.         - A new behavior in 2.2 is that after calling REQUEST.redirect the 
  383.           HTTP status can no longer be changed. This caused problems for 
  384.           some people who were calling redirect() and then trying to set 
  385.           the HTTP status to 301 Moved Permanantly instead of the default 
  386.           302 Moved Temporarily status. To make this possible, a new 
  387.           optional 'status' argument is now recognized by the redirect 
  388.           method so that RESPONSE.redirect('/foo', status=301) can be 
  389.           used
  390.  
  391.         - Corrected the text of some kinds of 'unauthorized' error messages.
  392.  
  393.         - Fixed a bug that caused dtml-try to throw a KeyError.  Related to
  394.           the recent changes made to DT_Util.namespace().
  395.  
  396.         - Packing to a time earlier that a previous pack could
  397.           lead to serious data lossage.
  398.  
  399.         - Attempts to install product information into the Zope database
  400.           on startup made no sense and could cause problems for ZEO
  401.           clients. Product adtabase updates are suppressed when the
  402.           ZEO_CLIENT environment variable is set.
  403.  
  404.         - A missing security assertion made DTML code that tried to create 
  405.           instances using manage_addProduct['foo'] constructs fail.
  406.  
  407.         - Fixed a couple typos in the Tutorial thanks to Alastair
  408.           Burt.
  409.  
  410.         - Fixed a Javascript error in the Tutorial thanks to Luke
  411.           Tymowski.
  412.  
  413.         - Revised online help content quite a bit.
  414.  
  415.         - Revised API docs quite a bit.
  416.  
  417.         - Fixed a bug in Logging docs thanks to Andy McKay.
  418.  
  419.         - Added code that will reveal bugs in calls to DT_Util.namespace().
  420.  
  421.         - The way that the values of selection and multiple selection 
  422.           properties were looked up on the properties form was changed so 
  423.           that the values can now be either properties on the same object 
  424.           or found through the DTML '_' namespace to support situations 
  425.           where the selection value is acquired or otherwise not findable 
  426.           in the object's properties.
  427.  
  428.         - The If-Modified-Since handling in Image and File objects did not 
  429.           gracefully handle malformed date strings in that header (which 
  430.           seem to be sent by certain proxy servers). Malformed date strings 
  431.           are now ignored as if the header was not present rather than 
  432.           raising an error.
  433.  
  434.     - Corrected a recent problem with boolean properties.
  435.  
  436.         - Permissions were not being set properly on factory methods
  437.           (constructors) loaded from Python (disk) products.  This bug
  438.           existed in 2.1, but was not very visible until recent fixes
  439.           were made to the security machinery.
  440.  
  441.         - The ownership management code incorrectly was willing to delete 
  442.           ownership information in the class rather than only in object 
  443.           instances.
  444.  
  445.         - A bug that made packing always complain that you were trying to 
  446.           pack to an earlier time than a previous pack was fixed.
  447.  
  448.         - The security context stack wasn't handled correctly for
  449.           DTMLDocuments.
  450.  
  451.         - DateTime objects did not support GMT(+/-)xx30 timezones.
  452.  
  453.     Zope 2.2.0 beta 3
  454.     
  455.       Bugs Fixed
  456.  
  457.         - Handling of "broken" products was, er, broken :) This is why 
  458.           some folks reported seeing objects "spontaneously change into 
  459.           Folders". In reality, the Broken objects that should have been 
  460.           created in place of objects whose Product was missing or broken 
  461.           weren't behaving correctly due to an interaction with the new 
  462.           overridable __getattr__ support in cPersistence.
  463.  
  464.         - FTP support was broken for Folders containing Broken objects.
  465.  
  466.         - ZServer returned None as the HTTP version if no version was given 
  467.           in the HTTP request.
  468.  
  469.         - It was possible to rename or move Versions, which was plain bad.
  470.  
  471.         - A bug that caused SQLMethods to have problems unpickling was fixed.
  472.           This bug also made it impossible to add Zope Tutorial instances.
  473.  
  474.         - A bug in the lookup order for Product extensions was fixed.
  475.  
  476.         - Fixed the tutorial to ensure that a gadfly directory has been 
  477.           created before attempting to import the tutorial info.
  478.  
  479.     Zope 2.2.0 beta 2
  480.     
  481.       Bugs Fixed
  482.  
  483.         - Fixed Tutorial bug that caused win98 to crash with adding a
  484.           tutorial.
  485.  
  486.         - Fixed ZService.py to avoid overwriting existing service start 
  487.           parameters at install time on win32.
  488.  
  489.         - The deprecated alias getSize() was added back to Image and DTML
  490.           objects (existing products still depend on it).
  491.  
  492.         - The "Host" headers sent by ZPublisher/Client.py did not include
  493.           the port number if given.
  494.  
  495.         - Cleaned up a DocumentTemplate namespace issue.  Fixed QuickStart.
  496.  
  497.         - Removed old validation code in cDocumentTemplate.
  498.  
  499.         - Added checks to only allow legal Python name characters in ZClass 
  500.           ids.
  501.  
  502.         - Selection and multiple selection properties were displayed 
  503.           incorrectly on ZClass propertysheet forms.
  504.  
  505.         - getPropertyType was not supported for PropertySheet objects. It 
  506.           appeared to work but always returned None because it was being 
  507.           acquired :)
  508.  
  509.         - The 'send' method of MailHost objects was broken if explicit 
  510.           to, from or subject arguments were given.
  511.  
  512.         - The constructor for MailHost objects was changed to have a non-
  513.           backward compatible signature in the alpha period. The 'localhost' 
  514.           and 'timeout' arguments were added back to the MailHost constructor 
  515.           for backward code compatibility for 2.2 beta 2 (though these args 
  516.           are now effectively ignored).
  517.  
  518.         - An insufficiently protected method deep in DocumentTemplate was 
  519.           fixed to prevent a security issue that could allow unauthorized 
  520.           changes to the sources of DTML objects.
  521.  
  522.         - Insertion of the BASE tag in responses violated the HTML 4 spec, 
  523.           which states that BASE must come first in the <head> element of 
  524.           a document so that relative references thereafter will work. It 
  525.           now conforms to the spec.
  526.  
  527.         - A bug in the SendMail tag if an existing mailhost was named has 
  528.           been fixed.
  529.  
  530.         - New and improved content has been added to the help system.
  531.  
  532.         - Some problems with certain management screens having wrong help 
  533.           or no help have been fixed.
  534.  
  535.         - A bug in PropertyManager allowed properties defined in products 
  536.           as read-only to be changed.
  537.  
  538.         - Added an entry in the content_types registry for RealAudio file 
  539.           extensions.
  540.  
  541.         - At some point z2.py stopped accepting "-P 0" as a valid option. 
  542.           That has been fixed.
  543.  
  544.         - Fixed a bug that caused instances of ZClasses which use
  545.           DTMLMethod as a base class to have an ID of "<string>".
  546.           Unfortunately, existing instances will still have the wrong
  547.           ID.  The effect is it's not possible to use the clipboard on
  548.           them.  They will need to be re-created.
  549.  
  550.     - Fixed a bug in PermissionMapping that could in a certain case 
  551.           cause determination of whether an object is a ZClass instance 
  552.           method to throw an exception.
  553.  
  554.         - A few tweaks were needed to the way that SQLMethods made use of 
  555.           the new security machinery. This fixes the authorization problems 
  556.           some users were seeing when calling SQLMethods from inside of 
  557.           other SQLMethods.
  558.  
  559.         - Medusa did not handle absolute URLs given in HTTP commands quite 
  560.           correctly. It turns out that WebTV (and possibly others) send 
  561.           such commands, and the HTTP spec allows them, so we now support 
  562.           it.
  563.  
  564.     Zope 2.2.0 beta 1
  565.     
  566.       Features Changed
  567.  
  568.         - Split the old CHANGES.txt into two files. CHANGES.txt will 
  569.           now contain only change information for the current Zope 
  570.           release. Change information for older versions is now in 
  571.           the file HISTORY.txt.
  572.  
  573.         - Added basic internal support for mountable databases. A separate 
  574.           product will still be required to make use of this ability.
  575.  
  576.         - Added a new "history" tab to selected objects (DTML methods and
  577.           documents for now) that provides access to previous versions 
  578.           through the web.
  579.  
  580.         - The property management screens now include the types for
  581.           existing properties.
  582.  
  583.         - Added support at Python level for user-defined
  584.           __get/set/delattr__ methods on persistent objects. These
  585.           have essentially the same semantics as for Python, except
  586.           that overridden __set/delattr__ methods must explicitly
  587.           signal changes that should be persistent.
  588.  
  589.         - Better error messages and syslog capabilities were added to 
  590.           pcgi-wrapper (thanks to Jeff Rush).
  591.  
  592.         - Calls to the ZLogger system were added to the user authentication
  593.           process to help sys admins diagnose login problems (thanks again
  594.           to Jeff Rush).
  595.  
  596.         - The Undo view shows *only* transactions performed in the
  597.           place where undo was performed. (As before, it also
  598.           shows only transactions performed by users defined in the
  599.           place where the undo user is defined.)
  600.  
  601.         - The way that transaction logging is done was changed to make
  602.           transaction logs based on "physical" object and user
  603.           paths. This was necessary to make undo work properly in the
  604.           presense of virtual hosts.
  605.  
  606.         - A number of hooks have been added and changes made to
  607.           support products that implement virtual hosts. Keep an eye on
  608.           http://www.zope.org/Members/michel/Projects/Interfaces/ImplementingVirtualHosts
  609.  
  610.         - The distributions now have an Extensions directory by default.
  611.  
  612.       Bugs Fixed
  613.  
  614.         - Added type checking to the constructor and edit methods of
  615.           builtin Zope object types to prevent inappropriate passing
  616.           of acquisition-wrapped objects for standard attributes (like 
  617.           title, etc.). A similar restriction was added to prevent the
  618.           adding of wrapped objects as properties.
  619.  
  620.         - Fixed a naming bug in MailHost that caused simple_send to
  621.           fail.
  622.  
  623.         - Fixed a buglet in the rename form that caused the form to submit
  624.           to the old manage_renameObject if the user just hit the enter 
  625.           key in the browser on a single item rename.
  626.  
  627.         - A bug that caused the tabs to disappear after performing cache
  628.           management operations was fixed.
  629.  
  630.         - A problem that prevented multiple Zope instances from running 
  631.           at the same time on win32 was fixed.
  632.  
  633.         - An algorithm in medusa's max_sockets.py code was updated to 
  634.           improve startup time on certain platforms.
  635.  
  636.         - The behavior of manage_editProperties on PropertyManagers and
  637.           PropertySheets has been fixed so that existing properties that
  638.           are not found in the update request are not reset to empty 
  639.           values.
  640.  
  641.         - A problem that disallowed access to the individual records in 
  642.           a result set from a SQL method was fixed.
  643.  
  644.         - A problem that caused the query template for an SQL method to
  645.           be rendered twice when used from the "test" tab has been fixed.
  646.  
  647.         - Fix for bug #1270: Netscape Image Problems. Added casts to long 
  648.           to avoid an overflow error caused when trying to convert dates 
  649.           sent by certain versions of Netscape in the If-Modified-Since 
  650.           header.
  651.  
  652.         - Corrected DateTime.py to recognize years specified as 00 through
  653.           69 as 2000 through 2069.
  654.  
  655.         - A bug that made objects named in dtml namespaces always fail 
  656.           security validation was fixed. This was noticed by folks trying
  657.           to use manage_tabs from ZClasses who hit the bug because the
  658.           manage_tags document uses a namespace: 
  659.           <dtml-with "_(manage_options=...">
  660.  
  661.         - A change to pcgi_publisher was made to support FreeBSD, where
  662.           send() will send only 8192 bytes at a time.
  663.  
  664.         - A bug that broke import in the alpha was fixed.
  665.  
  666.         - A bug in the transaction handling logic could cause infinite
  667.           loops if objects were registered incorrectly.
  668.  
  669.         - A bug in the transaction machinery could cause objects to
  670.           be aborted multiple times if errors occurred.
  671.  
  672.         - Logging via syslog now correctly captures the process id.
  673.  
  674.         - Adding User Folders and MailHosts from the management screens 
  675.           didn't redirect to the correct URL after adding the object.
  676.  
  677.         - A form problem that prevented joining or leaving versions 
  678.           has been fixed.
  679.  
  680.         - A more reasonable default content type is now used for HEAD 
  681.           requests on DTML objects if the object does not have a 
  682.           content_type attribute or a file-extension-like id that can 
  683.           be used to determine content type.
  684.  
  685.         - HTTP HEAD handling was inconsistent for collections, depending
  686.           on whether the "default document" (index_html) was acquired or
  687.           not.
  688.  
  689.     Zope 2.2.0 alpha 1
  690.  
  691.       Features Changed
  692.  
  693.         - Added a new security policy architecture and object ownership 
  694.           to address the server side trojan issue. The new architecture
  695.           cleaned up various places where Zope code did authorization
  696.           checks. A side effect of the new policy is that it is a bit
  697.           more strict than it used to be - objects without explicit
  698.           protection to which access was previously allowed will now
  699.           be denied. There is a new declarative method for providing
  700.           access to such objects, which has been applied to certain 
  701.           previously unprotected Zope objects that DTML writers are 
  702.           accustomed to having access to. See the SecurityPolicy 
  703.           wiki pages on Zope.org for further information.
  704.  
  705.         - Added a new online help system. Help is now available for
  706.           standard Zope objects. Zope developers can add help for their
  707.           Python Products and Control Panel Products. See HELPSYS.txt
  708.  
  709.         - Added logic to increase the Python interpreter "check interval"
  710.           that should provide at least a 20% performance improvement for 
  711.           most Zope sites. Also added a new -i option to z2.py so that
  712.           Zope users can pass in alternate values (the default is 120)
  713.           for the check interval. This lets users experiment and tune
  714.           the interval for the best results in their particular system
  715.           environments.
  716.  
  717.         - The message returned when an empty result set is returned
  718.           from a ZSQL Method has been clarified.
  719.  
  720.         - In the load_site utility:
  721.  
  722.            o Added logic to try and figure out a path to ZPublisher if
  723.              one was not provided.
  724.              
  725.            o Added an option, -I, to automatically add an index_html
  726.              method that redirects to index.html or index.htm.
  727.         
  728.         - Record objects returned by ':record' form-marshalling tag have
  729.           been enhanced to act like mapping objects.
  730.  
  731.         - The ZServer startup script, z2.py, now allows all servers to be
  732.           disabled with a single option,
  733.  
  734.         - The ZServer startup script, z2.py, now allows all multiple
  735.           HTTP, FTP, or monitor servers to be run.
  736.  
  737.         - The ZServer startup script, z2.py, now allows separate IP
  738.           addresses to be specified for each HTTP, FTP, or monitor
  739.           server. 
  740.  
  741.         - Added 'urlparam' attribute to tree tag to allow propagation
  742.           of extra parameters through tree URL's (Collector #1045).
  743.  
  744.         - When renaming objects, the old id is provided as the 
  745.           default value for the new id.
  746.  
  747.         - Allow non-sliceable keys in PersistentMappings (Collector #1064).
  748.  
  749.         - Use smtplib in implementing MailHost/sendmail (Collector #1005).
  750.  
  751.         - Allow call to get() w/o explicit default in PersistentMapping
  752.           (Collector #1182).
  753.  
  754.         - Allow rename of multiple items (Collector #1065).
  755.  
  756.         - Allow expr syntax in <dtml-mime/boundary> for type, disposition,
  757.           encode, name, filename; add skip_expr (Collector #892).
  758.  
  759.       Bugs Fixed
  760.  
  761.         - Fixed problem with extra PermissionMapping objects being in
  762.           the aq_parents hierarchy during traversal when a method was
  763.           being accessed a ZClass defined instance method.
  764.  
  765.         - Fixed ZCatalog 'Find to ZCatalog' with expressions problem.
  766.  
  767.         - Fixed broken links in ZCatalog 'Cataloged objects' view.
  768.  
  769.         - FTP directory listings were not sorted.
  770.  
  771.         - Improved FCGI support in ZServer.
  772.  
  773.         - Improved ZServer streaming, including fixing chunking and
  774.           keep-alive support. Chunking is now done by default with
  775.           HTTP 1.1 clients. Fixed possible problems with large responses.
  776.           Thanks to Toby Dickenson.
  777.  
  778.         - ZServer's FTP server no longer binds to all interfaces.
  779.  
  780.         - Fixed a bug which caused File objects of type 'text/html' be
  781.           have the wrong Content-Length set.
  782.  
  783.         - A bug in SQL methods could caused results to be returned without
  784.           an acquisition context.  This could cause methods provided
  785.           via ZClass brains to be inaccessable due to the dependence of
  786.           ZClass method security on a correct acquisition environment.
  787.  
  788.         - Fixed tree tag so that expand_all and branches_expr play nice
  789.           (Collector #919).
  790.  
  791.         - Suppressed "private" names from catalog indexes/meta-data
  792.           (Collector #1076).
  793.  
  794.         - Allowed strings with linebreaks as data in Gadfly queries
  795.           (Collector #972).
  796.  
  797.         - Added note to WEBSERVER.txt pointing out security issues with
  798.           REMOTE_USER mode (Collector #733).
  799.  
  800.         - Fixed colspan counting in tree tag (Collector #913).
  801.  
  802.         - Logging enabled with the -D option to the z2.py script did
  803.           not include traceback information and was not performed
  804.           during Zope startup.  This made finding startup errors
  805.           difficult.
  806.  
  807.         - The logic for reparsing the dtml files used for the Zope management
  808.           screens while in development mode was broken - it was reparsing 
  809.           system dtml files on every request.
  810.  
  811.         - Correct DateTime docstring to remove spurious 'negative offset'
  812.           language (Collector #1074).
  813.  
  814.         - Clean up pointer cast to suppress compiler warning in zlib.c
  815.           (Collector #1190).
  816.  
  817.         - Guarantee null-terminated buffer in Record_init() so
  818.           Record_compare() doesn't UMR (Collector #1012).
  819.  
  820.         - Clean up use of PData for large images (Collector #1061).
  821.  
  822.         - Fix overflow exception in statistics of <dtml-in> (Collector #1089).
  823.  
  824.         - Check for invalid characters in whole id, not just first character
  825.           (Collector #1131).
  826.  
  827.         - Prevent unintentional exceptions from blocking manage_beforeDelete;
  828.           added OFS.ObjectManager.BeforeDeleteException to allow an object
  829.           to veto its deletion (Collector #1183).
  830.  
  831.  
  832.     Zope 2.1.6
  833.  
  834.       Bugs Fixed
  835.  
  836.         - Some bits from the 2.2 line inadvertantly got into the ZRDB
  837.           package during the SQL Methods update which caused errors 
  838.           for certain database adapters.
  839.  
  840.         - A fix to the logic in Acquisition for aq_acquire caused a bug 
  841.           in the handling of inner ZClasses.
  842.  
  843.  
  844.     Zope 2.1.5
  845.  
  846.       Bugs Fixed
  847.  
  848.         - Fixed a problem with the permission declarations for the Image 
  849.           and File classes. The problem made it impossible to change the 
  850.           'View' permission for File objects.
  851.  
  852.     - Added logic to setgid() to the user's primary group if z2.py
  853.           is run by root.
  854.  
  855.         - Fixed a bug in TimeStamp objects that produced a wrong 
  856.           date/time representation for bobobase_modification_time.
  857.  
  858.         - Changed _checkId in ObjectManager to disallow REQUEST as an
  859.           object id.
  860.  
  861.         - Fixed a bug that could allow someone with a lot of Zope zen
  862.           to change the apparent AUTHENTICATED_USER to access things 
  863.           that they shouldn't.
  864.  
  865.         - Fixed a bug in ZServer that could cause server hangs under
  866.           certain heavy load conditions.
  867.  
  868.         - Fixed a remaining '.' form target that we missed in the Zope
  869.           rename form. This caused rename to fail for Zope installations 
  870.           running behind Netscape servers.
  871.  
  872.         - Fixed a potential buffer bug in PCGI reported by Larry Luther.
  873.  
  874.         - In the load_site utility, binary files were misshandled on
  875.           windows.
  876.  
  877.         - Fixed manage_renameObject to be willing to get the REQUEST 
  878.           via acquisition, making it easier to use from DTML.
  879.  
  880.     - Changed the expireCookie method of FTPResponse to fail 
  881.           gracefully when attempting to delete a cookie that does
  882.           not exist.
  883.  
  884.         - Fixed a bug that caused a traceback when all members of a 
  885.           multiple select property were deselected.
  886.  
  887.     - The _validTime method of DateTime objects rejected time values
  888.           with fractional seconds between 59 and 60 (which caused problems
  889.           with some database date conversions).
  890.  
  891.         - Changed id checking logic to disallow '/' in an object id.
  892.  
  893.         - Structured Text had problems with '~' characters in URLs.
  894.  
  895.         - Fixed a potential security hole that could allow users with 
  896.           permission to add Folders and edit DTML (and a who have a 
  897.           lot of Zope zen) to get access to things that they shouldn't.
  898.           
  899.         - The internal templates used by SQL methods weren't correctly 
  900.           applying the same access control constraints as standard DTML
  901.           objects.
  902.  
  903.     - Fixed ZopeAttributionButton to open in the top-level of the
  904.           web browser.
  905.  
  906.         - Fixed a problem with using the "scale" arguments to the tag
  907.           method of Image objects.
  908.  
  909.         - Fixed a problem in the Acquisition module that could cause
  910.           objects accessed via aq_acquire to not be wrapped correctly.
  911.  
  912.         - Fixed If-Modified-Since header handling for Images and Files.
  913.  
  914.  
  915.     Zope 2.1.4
  916.  
  917.       Bugs Fixed 
  918.  
  919.         - Removed the "feature" that allowed the REQUEST object to be
  920.           traversed through the web. While useful for debugging, this 
  921.           could be a security issue.
  922.  
  923.  
  924.     Zope 2.1.3
  925.  
  926.       Bugs Fixed 
  927.  
  928.         - A race condition in the logic for managing Zope database
  929.           connections caused Zope to hang on very busy sites.
  930.  
  931.     - A bug in the packing code that caused records to be
  932.           nreadable after:
  933.  
  934.       o  someone did work in a version
  935.  
  936.       o  Someone did an (unrelated) undo
  937.  
  938.       o  the version was committed
  939.  
  940.       and the database was packed to a time before the work was done
  941.       in the version. 
  942.  
  943.     - Fixed a bug that caused packing to raise an
  944.       error in the following situation:
  945.  
  946.         o someone modifies and then deletes an object
  947.           in a version.
  948.  
  949.         o they commit the version
  950.  
  951.         o the database is packed between the time the
  952.           object is deleted and the time the version
  953.           is committed.
  954.  
  955.         - Fixed a bug that caused Zope to sometimes hang instead of
  956.           shutting down or restarting when accessed over a fast network. 
  957.  
  958.         - It wasn't possible to use a ZClass instance as a method of a
  959.           ZClass. 
  960.  
  961.  
  962.     Zope 2.1.2
  963.  
  964.       Bugs Fixed 
  965.  
  966.         - Thanks to Kevin Littlejohn's sleuthing, a sizable problem in
  967.       the security machinery in DTML has been brought to our
  968.       attention and resolved.  The problem is most acute in
  969.       situations where untrusted people can edit DTML documents or
  970.       methods.
  971.  
  972.  
  973.     Zope 2.1.1
  974.  
  975.       Bugs Fixed 
  976.  
  977.         - Conflict errors (multiple threads trying to modify the same
  978.           object) were not handled correctly for requests with
  979.           bodies (e.g. POST requests).
  980.  
  981.         - ZODB FileStorage index files could become out of date after
  982.           an undo. This could lead to strange results and apparent
  983.           database corruption if Zope was shut down ungracefully and
  984.           restarted.  Now index files are removed when undoing
  985.           records.
  986.  
  987.         - Saving or discarding versions failed if a transaction that
  988.           added a new object in the version was undone.
  989.  
  990.         - There was circumstantial evidence that a failure of an OS to
  991.           correctly delay writing to data to disk after Zope had
  992.           written it led to a corrupted database.  Zope now makes an
  993.           'fsync' system call (where available on Unix systems) to
  994.           force data to be written to phusical storage when
  995.           transactions are committed.
  996.  
  997.         - Some applicataions were writing empty transactions. The
  998.           FileStorage now checks for and avoids writing empty
  999.           transactions in this case.
  1000.  
  1001.         - Multiple-selection properties didn't work in regular
  1002.           property views, even though they did work in ZClass property
  1003.           sheets.
  1004.  
  1005.         - The Win32 WISE installer did not create a default Zope.cgi
  1006.           PCGI resource file.
  1007.  
  1008.         - The Win32 WISE installer script is now included in the /inst
  1009.           directory of win32 installations by popular demand.
  1010.  
  1011.         - An import problem caused the name "BTree" to be incorrectly 
  1012.           overwritten in TextIndex.py and UnTextIndex.py in the
  1013.           SearchIndex package, which caused problems for some third-
  1014.           party product authors.
  1015.  
  1016.         - There were a number of problems with the load-site utility
  1017.           (utilities/load_site.py):
  1018.  
  1019.            o A recent change caused HTML files to have their headers and
  1020.              footers replaced with var tags for standard headers and
  1021.              footers.  While this is sometimes very useful, it is
  1022.              sometimes disastrous.  This feature is now enabled with the
  1023.              -D option.
  1024.              
  1025.            o Handling of files with a '.dtml' extension was broken. These
  1026.              are now handled correctly. Files with '.dtml' suffixes now
  1027.              get uploaded as methods.
  1028.              
  1029.            o A workaround for old sites that had a bug in Document (aka
  1030.              DTMLMethod) upload has been disabled. This workaround is now
  1031.              enabled when the -9 option is used.
  1032.  
  1033.       The following bug fixes were accidentially excluded from 2.1.0:
  1034.  
  1035.         - Redefining the "views" on a ZClass could incorrectly affect
  1036.           the views available on instances of base classes of the ZClass.
  1037.  
  1038.         - The new 'url' option to DTML 'var' tags did not work properly
  1039.           for DTML and other callable objects.
  1040.  
  1041.  
  1042.     Zope 2.1.0
  1043.     
  1044.       Features Changed
  1045.       
  1046.         - Enabled preliminary support for FastCGI to ZServer. This
  1047.           allows Zope to communicate with web servers that support
  1048.           FastCGI. Use z2.py's -F switch to configure FastCGI support
  1049.           in ZServer. See WEBSERVER.txt for more information.
  1050.  
  1051.       Bugs Fixed
  1052.  
  1053.         - Redefining the "views" on a ZClass could incorrectly affect
  1054.           the views available on instances of base classes of the ZClass.
  1055.  
  1056.         - The new 'url' option to DTML 'var' tags did not work properly
  1057.           for DTML and other callable objects.
  1058.  
  1059.  
  1060.     Zope 2.1.0 beta 2
  1061.  
  1062.       Features Added
  1063.  
  1064.         - Added Oleg Broytmann's patches to utilities/load_site.py 
  1065.           that provide automatic parsing of title and property 
  1066.           information and inclusion of std headers and footers.
  1067.  
  1068.         - Added Martijn Pieters' patches to DT_Try.py to implement 
  1069.           try/except/else and try/finally constructs.
  1070.  
  1071.         - Virtual Hosting and SiteObjects.  Virtual Hosting allows a
  1072.           server that can multi-host, like Apache, to serve different
  1073.           hosts from different Zope folders.  'SiteObjects' act as a
  1074.           placeholder for a virtualhost.
  1075.  
  1076.       Bugs Fixed
  1077.  
  1078.         - Some problems with the product distribution machinery that
  1079.           prevented product distributions from installing correctly 
  1080.           have been fixed.
  1081.  
  1082.         - Description lines on the Undo screen were not HTML quoted,
  1083.           which could cause problems rendering the Undo log if any 
  1084.           of the descriptions contained stray HTML tags.
  1085.  
  1086.         - Bugs in the way that ZClass instances were pickled have 
  1087.           been fixed.
  1088.  
  1089.         - Some long-standing indentation problems with the tree tag 
  1090.           have been fixed.
  1091.  
  1092.         - The Zope database lock file was not properly closed.
  1093.  
  1094.         - Linux and Solaris binary distributions did not contain the
  1095.           python _locale module required for locale support.
  1096.  
  1097.  
  1098.     Zope 2.1.0 beta 1
  1099.  
  1100.       Features Added
  1101.  
  1102.         - The ZCatalog now supports relevance ranking.  Instead of
  1103.           search results being returned in an essentially random
  1104.           order, results are now sorted by 'score'.  For text indexes, 
  1105.           the score is the number of occurrences of the search term in 
  1106.           a document.  The score can be accessed by an attribute on
  1107.           Catalog results 'data_record_score_' and
  1108.           'data_record_normalized_score_' contain the score and
  1109.           normalized score for the result object.
  1110.  
  1111.         - Added Keyword Indexes to the Catalog.  Keyword indexes allow
  1112.           you to index a sequence of 'keywords' as an atomic property
  1113.           of an object.  This is useful for buiding catagorical
  1114.           hierarchies.
  1115.  
  1116.         - Z SQL Methods arguments list is now a TEXTAREA widget to
  1117.           ease editing long aruments lists.
  1118.  
  1119.         - SQL Database Adapters now have a 'test' tab where arbitrary
  1120.           SQL may be entered and executed immediately through the
  1121.           connection object.  DTML is not supported in this tab.
  1122.  
  1123.         - SQL Methods now support an option 'op' parameter on the DTML 
  1124.           method <dtml-sqltest> which allows you to choose the
  1125.           operator used for comparison. 
  1126.  
  1127.         - WebDAV support has been modified to support MS Office 2000
  1128.           applications. The changes _emulate_ aspects of DAV level 2
  1129.           locking but do _not_ provide actual locking support at the
  1130.           present time.
  1131.  
  1132.         - Files and Images now can be served without loading themselves
  1133.           into memory. This is automatically done for large Files and 
  1134.           Images. As a by product, RESPONSE.write now works better in
  1135.           ZServer.
  1136.  
  1137.         - Most if not all of the default DTML generated by Zope and its
  1138.           built-in products is now generated in the new <dtml-var ...>
  1139.           syntax. The DTML sources for Zope's built-in management 
  1140.           interfaces have also been converted to the new syntax.
  1141.  
  1142.         - DTML entity references can now include dot-separated
  1143.           var tag *options*, as in: '&dtml.url_quote-foo;'
  1144.  
  1145.         - There is a new 'url' option on the DTML var tag that causes
  1146.           absolute_url to be called on the displayed value.  This
  1147.           allows entity references like: '&dtml.url-foo;'
  1148.  
  1149.         - There is a new 'url_quote_plus' option on the DTML var tag that
  1150.           acts like the standard url_quote option but uses '+' to encode
  1151.           blank spaces.
  1152.  
  1153.         - There is a new 'missing' option in the DTML var tag that
  1154.           allows you to provide a value to be used if the variable is
  1155.           missing, rather than raising a KeyError.  This will work in
  1156.           the entity reference syntax as well.  If it is used without
  1157.           an argument, it will provide an empty string.
  1158.  
  1159.         - The DTML built-in function, getattr, now accepts an additional 
  1160.           argument providing a default value.    
  1161.  
  1162.         - The tag() method of Image objects now support optional 'scale',
  1163.           'xscale' and 'yscale' arguments that will automatically scale 
  1164.           the output height and width tag attributes.
  1165.  
  1166.         - The Products folder in the Control Panel now has an 'Import/Export'
  1167.           tab to allow easier importing and exporting of Control Panel
  1168.           Products.
  1169.  
  1170.       Features Changed
  1171.  
  1172.         - ZCatalog uses subtransactions to keep memory consuption low
  1173.           at the expense of indexing speed.  Subtransactions can now
  1174.           be disabled through the management interface for use with
  1175.           non subtransactions compatible objects like ZSQL Methods (or
  1176.           for raw speed if you have lots of RAM).
  1177.  
  1178.         - Added a coptimizations module.  The first optimization is
  1179.           to provide an implementation of persistent_id in C.  This
  1180.           routine, which is called extremely often while pickling was
  1181.           found to be a significant bottleneck.
  1182.  
  1183.         - More flexible cache management methods were added to ZODB
  1184.           Connection objects so that apps that want to move objects
  1185.           out of memory can force aggressive cache behavior.
  1186.  
  1187.         - Added the beginnings of internationalization support to Zope.
  1188.           The Zope startup script (z2.py) now supports a "-L" option 
  1189.           that can be used to pass a locale name (such as "en" or "de")
  1190.           to Zope at startup. If specified, Zope will attempt to set the
  1191.           locale using the locale module if it is available. This change
  1192.           will allow Zope to better handle international characters in
  1193.           a number of places such as searching and indexing.
  1194.  
  1195.         - Logging from ZServer modified to produce Common Log Format
  1196.           in a Combined format, where user-agent and referer are also 
  1197.           logged.
  1198.           
  1199.         - xmlrpclib was updated to relect the current version (0.9.8)
  1200.           from Pythonware.
  1201.  
  1202.         - Add button returned to the management interface, although
  1203.           the Javascript auto-select is still in place.  This resolves 
  1204.           some problems with browsers on certain platforms.
  1205.  
  1206.         - Added small explanation on Image/File add form that if the
  1207.           'id' is not provided, it will be autogenerated based on the
  1208.           file name.
  1209.  
  1210.       Bugs Fixed
  1211.  
  1212.         - The build procedure for source checkouts now sets the
  1213.           directory structure permissions to something (775) readable
  1214.           by anyone, including, e.g., the web server running under a
  1215.           different user id and group than the installer...
  1216.  
  1217.         - A bug in the DTML tree tag that prevented expand_all from
  1218.           working correctly has been fixed.
  1219.  
  1220.         - ZCatalog now actually saves memory when using
  1221.           subtransactions.  Plugged a couple memory leaks doing this.
  1222.  
  1223.         - Added ALT text fixed nested anchor tags produced by the Tree
  1224.           tag to ensure that valid HTML is produced, and fixed the
  1225.           reverse option to the Tree tag.
  1226.  
  1227.         - A bug in FTP cookie authentication was fixed.
  1228.  
  1229.         - Fixed a bug that caused External Methods to be reloaded every
  1230.           time they were used in development mode.
  1231.  
  1232.         - Fixed a permission typo in ZCatalog and a sort_on bug.
  1233.  
  1234.         - Fix for missing REQUEST in a method signature in the 
  1235.           CatalogAwareness module.
  1236.  
  1237.         - Changed to propagate errors raised by _begin for thunked
  1238.           database adapters. Also changed completion code to check 
  1239.           registered status and avoid completion logic if not registered, 
  1240.           which would be the case if _begin failed.
  1241.  
  1242.         - A memory leak in cPersistence has been fixed, and a bug in
  1243.           object deactivation that prevented deactivation of BTrees
  1244.           was fixed.
  1245.  
  1246.         - A problem in BTrees that caused unintended db writes on 
  1247.           Catalog searches was fixed.
  1248.  
  1249.         - Some unnecessary debug mode overhead eliminated - external
  1250.           methods are now automatically reloaded only when the .py
  1251.           files are changed. 
  1252.  
  1253.         - A thread-safety problem with PCGI handling was fixed.
  1254.  
  1255.         - A bug that caused installation of through-the-web product
  1256.           distributions to fail.
  1257.  
  1258.         - A bug in the handling of long int properties was fixed.
  1259.  
  1260.         - Some bugs in the generation and verification of CRYPT based 
  1261.           passwords was fixed.
  1262.  
  1263.         - A bug in the earliestTime method of DateTime objects was fixed.
  1264.  
  1265.         - A bug in determination of the ZServer version string was fixed.
  1266.  
  1267.         - Height and width detection for some PNG images did not work 
  1268.           properly.
  1269.  
  1270.         - A bug that caused proxy role machinery to ignore local roles
  1271.           was fixed.
  1272.  
  1273.         - Added a fix for PCGI to make sure binary IO is used on win32.
  1274.  
  1275.         - A javascript fix for IE5 was made for the folder add list.
  1276.  
  1277.         - A bug in sequence multiplication in DTML was fixed.
  1278.  
  1279.         - A ZServer bug that prevented running multiple Zope2 installations 
  1280.           on non-posix systems was fixed.
  1281.  
  1282.         - An External Method error handling bug was fixed.
  1283.  
  1284.         - The local 'Owner' role could be overwritten when an object
  1285.           was copied, moved or renamed.
  1286.  
  1287.         - Documented and fixed the creation of 'selection' and 'multiple
  1288.           selection' properties.
  1289.  
  1290.         - SECURITY: Fixed bug that allowed users with local roles gain 
  1291.           priviledges on acquired objects.  getRolesInContext did not 
  1292.           used the correct context, as defined by the inner-most object 
  1293.           wrapping.
  1294.  
  1295.         - SECURITY: The permissions for Find support methods were not 
  1296.           being properly initialized.
  1297.  
  1298.         - SECURITY: Viewing existing user no long displays current password,
  1299.           only space for putting in the new password. This will be more
  1300.           critical as we move toward fully encrypted passwords.
  1301.  
  1302.         - SECURITY: A bug that prevented setting permissions on External 
  1303.           Methods in ZClasses was fixed.
  1304.  
  1305.  
  1306.     Zope 2.0.1
  1307.  
  1308.       Bugs Fixed
  1309.  
  1310.         - Fixed a bug which allowed unauthorized options to be displayed 
  1311.           when adding a Folder. Now you only see options to add an 
  1312.           index_document and/or a user folder if you have adequate 
  1313.           permissions.
  1314.  
  1315.  
  1316.     Zope 2.0
  1317.  
  1318.       Features Added
  1319.  
  1320.         - Database conflict errors are now logged.  Although conflict
  1321.           errors are normally handled by retrying requests, frequent
  1322.           conflict errors can degrade performance and should be dealt
  1323.           with by redesigning applications.
  1324.  
  1325.       Features Changed
  1326.  
  1327.         - The process id displayed in the control panel now inclused
  1328.           the thread id, in parentheses.
  1329.  
  1330.         - Upload of image or file data *always* used
  1331.           sub-transactions. Unfortunately, database adapters don't
  1332.           support subtransactions.  Images and files now use
  1333.           subtransactions only of the image or file is greater than
  1334.           128K bytes in size.  Also, subtransactions are not used if
  1335.           data are uploaded as a string by using the ':string'
  1336.           ZPublisher type in the upload form.
  1337.  
  1338.           More advanced DA's could, and probably should support
  1339.           sub-transactions.
  1340.  
  1341.       Bugs Fixed
  1342.  
  1343.         - Attempting to cut an object then paste it into itself or
  1344.           one of its subobjects would cause a recursion problem.
  1345.  
  1346.         - Certain ZCatalog reindex operations could fail due to an
  1347.           unintended transaction abort.
  1348.  
  1349.         - Database connections were leaked when database conflict
  1350.           errors occurred and handled by reexecuting requests.  When 7
  1351.           connections leaked, the site would accept no more web
  1352.           requests. 
  1353.  
  1354.         - The transaction-integration for relational databases didn't
  1355.           work properly.  Aborting Zope transactions didn't abort
  1356.           relational database transactions. What's worse, transactions
  1357.           were not committed after a Zope transaction using a
  1358.           relational database was aborted.  This explains the reported
  1359.           problems with Gadfly databases and transactions.
  1360.  
  1361.         - Fixed a bug which prevented ZPublisher.Client from uploading
  1362.           files to ZServer.
  1363.  
  1364.         - Added some logic to the win32 binary installer to fix some
  1365.           dll loading problems people were getting on international
  1366.           versions of NT.
  1367.  
  1368.         - Fixed a bug in cDocumentTemplate that could cause AttributeError
  1369.           instances to be leaked in certain situations.
  1370.  
  1371.         - 'reverse' option for the 'in' tag as well as the 'tree' tag
  1372.           has been changed to deal with a copy of the data, rather
  1373.           than the original.  The database was being modified in
  1374.           place. The side effect is that in large list situations
  1375.           (with ZCatalog for example), sizable memory usage may
  1376.           result. 
  1377.  
  1378.         - Missing values (as returned from SQL methods) were output as
  1379.           empty strings by the DTML var tag, even when a numeric
  1380.           format (e.g. "%5.3f") is used.  Using a numeric format with
  1381.           a missing value should generate an error, unless the null
  1382.           attribute is used. Also, the null attribute had no effect
  1383.           when outputing missing values.
  1384.  
  1385.         - It was impossible to map some permissions to themselves, or
  1386.           to other inherited, but not registered permissions in
  1387.           products and in class methods.  When this failed, a silly
  1388.           error message ("Waaa" ;) was output.
  1389.  
  1390.         - SQL methods had an unused method, getFindContent allowed
  1391.           anonymous users to read SQL method source.  This method was
  1392.           renamed to PrincipiaSearchSource, and protected with a
  1393.           permission.
  1394.  
  1395.         - SQL methods could not be found with the find mechanism by
  1396.           searching their source.
  1397.  
  1398.         - The PrincipiaSearchSource method of DTML documents and
  1399.           methods was not protected, so anonymous users could read
  1400.           their source.
  1401.  
  1402.         - Fixed a bug in ZOM which caused getElementsByTagName to fail
  1403.           when using XML Document. Thanks to Andrew Kuchling.
  1404.  
  1405.         - It was possible to hijak 'self' arguments for DTML and
  1406.           External methods with request variables. This was especially
  1407.           problematic for XML-RPC, which uses positional arguments.
  1408.  
  1409.         - It was difficult or impossible to call External methods with
  1410.           'self' arguments from XML-RPC.
  1411.         
  1412.  
  1413.     Zope 2.0 beta 6
  1414.  
  1415.       Features Added
  1416.  
  1417.         - The control panel process id display now also includes the
  1418.           thread id.
  1419.  
  1420.         - The Zope start script, 'start', is now written in a
  1421.           location-independent manner, making it a little easier to
  1422.           move Zope sites around after installation.
  1423.  
  1424.       Features Changed
  1425.  
  1426.         Zope 2.0 introduces a new HTML DTML syntax that, among other
  1427.         things, allows simple 'var' tags to be entered using the
  1428.         entity-reference syntax, as in::
  1429.  
  1430.           <input name=spam value="&dtml-spam;">
  1431.  
  1432.         The entity reference syntax is mainly intended for use
  1433.         when a var tag is used to insert text into an HTML tag.  In
  1434.         these cases, the text needs to be html-quoted. For this
  1435.         reason, use of the entity reference syntax now implies html
  1436.         quoting. For example, the DTML snippet above is equivalent to::
  1437.  
  1438.           <input name=spam value="<dtml-var spam html_quote>">
  1439.  
  1440.         (Note that when inserting text to be used in a URL, as in an A
  1441.         tag HREF attribute, we need to url-quote the text. Zope 2.1
  1442.         will provide a means to do this with the entity-reference
  1443.         syntax.)
  1444.  
  1445.       Bugs Fixed
  1446.  
  1447.         - Missing values were not formatted correctly with numeric
  1448.           formats and did not work properly with the 'null' attribute of
  1449.           the DTML 'var' tag.
  1450.  
  1451.         - It wasn't possible to map some permissions of objects in
  1452.           Products. For example, it wasn't possible to enable a
  1453.           permission by mapping it to itself.  Attempts to do so lead
  1454.           to a rather silly uninformative error message.
  1455.  
  1456.         - When providing default values for input fields, few of the
  1457.           built-in DTML methods used html quoting.  This lead to
  1458.           incorrect behavior when default values included markup or
  1459.           quotes.  
  1460.  
  1461.         - View filtering failed to show tabs for views in some cases
  1462.           where it should.
  1463.  
  1464.         - Single-character variable names were'nt allowed in the
  1465.           entity-reference DTML syntax.
  1466.  
  1467.         - DTML batch processing didn't work properly.
  1468.  
  1469.         - The DTML functions, '_.getattr', and '_.hasattr' incorrectly
  1470.           acquired attributes even when explicit acquisition was used.
  1471.  
  1472.         - Image dimensions were not autodetected for PNG 1.2 files.
  1473.  
  1474.         - The "View" view didn't display correctly for images with ids
  1475.           with characters that had special meaning in URLs.
  1476.  
  1477.         - The 'optional' attribute in the 'sqltest' tag had no effect.
  1478.  
  1479.         - With browsers (like lynx) that correctly implement RFC 1867
  1480.           for file-upload support, non-file fields in file-upload
  1481.           requests were treated as file fields.
  1482.  
  1483.  
  1484.     Zope 2.0 beta 5
  1485.     
  1486.       Features Removed
  1487.  
  1488.        - The help system, which was primarily geared to DTML
  1489.          programmers was removed.
  1490.  
  1491.       Bugs fixed
  1492.  
  1493.         - Database packing failed in certain cases where the data set
  1494.           contained many version commits.
  1495.  
  1496.         - Database packing generated spurious error logs indicating
  1497.           that there were bad references for objects created in
  1498.           ncommitted versions.
  1499.  
  1500.         - A memory leak due to errors in managing request data.
  1501.  
  1502.         - Zope sites became unresponsive (a.k.a. "Hung") due to an
  1503.           error in managing ZODB 3 database connections.
  1504.  
  1505.         - Only the top-level folder's standard_error_message was used.
  1506.  
  1507.         - There were thread-safety and resouce consumption problems
  1508.           in the implementation of thread-safe regex objects.
  1509.          
  1510.         - Fixed bug where ZCatalog's not in the root folder did not
  1511.           recognize the proper URL of objects using the 'Find'
  1512.           machinery.  This caused all the objects to mysteriously
  1513.           disapear when you updated the catalog (because their paths
  1514.           were wrong).  The Catalog now works correctly anywhere in
  1515.           the object hierarchy.
  1516.  
  1517.         - Fixed a bug that caused error messages to be formatted
  1518.           incorrectly if the standard_html_header did not begin
  1519.           with an HTML tag.
  1520.  
  1521.         - The undo form was accessible even to people who couldn't do
  1522.           undo. This made it look like we were allowing undo in cases
  1523.           where we were'nt supposed to.
  1524.  
  1525.         - The undo form did not restrict undoable transactions to
  1526.           just those transactions performed by users that were 
  1527.           authenticated at the same level.  This made the new undo
  1528.           less restrictive than the Zope 1 undo.  Undo should probably
  1529.           be *more* restrictive, but that will have to wait for 2.1
  1530.           or later.
  1531.  
  1532.         - Zope crashed under load for applications using ZCatalog due
  1533.           to an ancient bug in handling loading of empty BTrees from
  1534.           the database.  This bug has only become effective with
  1535.           ZCatalog.
  1536.  
  1537.  
  1538.     Zope 2.0 beta 4
  1539.     
  1540.       Features Removed
  1541.  
  1542.         - Draft objects are no longer supported.
  1543.  
  1544.       Features added
  1545.  
  1546.         - The source release install script now checks to make sure that
  1547.           the Python used has thread support.
  1548.  
  1549.         - FileStorages can now habe quotas.
  1550.  
  1551.       Bugs fixed
  1552.  
  1553.         - This release fixes a socket listen-queue depth problem on
  1554.           Win32 systems that caused poor performance and connection
  1555.           refusals in ZServer.
  1556.  
  1557.         - Fixes to the win32 installation were made to prevent a
  1558.           potential conflict on systems that have an existing
  1559.           installation of the Python win32 extensions.
  1560.  
  1561.         - Some of the management views, including the
  1562.           security/permission mapping views were not visible for
  1563.           ExternalMethods. 
  1564.  
  1565.         - New SQL methods could bot be created.
  1566.  
  1567.         - New mailhost objects could not be created.
  1568.  
  1569.         - New Draft objects could be created.
  1570.  
  1571.         - Draft objects could not be deleted.
  1572.  
  1573.         - ZClasses could not be added as methods.
  1574.  
  1575.         - Disk full errors could leave the object system
  1576.           in an inconsistent state.  The handling of this error 
  1577.           was made more robust.  Also, when serious errors like this
  1578.           occur late in the transaction commit process, the
  1579.           transaction system switches to read-only mode.
  1580.  
  1581.           The File-storage recovery process needs to change to make
  1582.           disk full errors detectable earlier in the two-phase commit
  1583.           process so that the system can recover without switching to
  1584.           read-only mode.  This change, which is expected in 2.1 will
  1585.           also provide better write performance.
  1586.  
  1587.         - Errors during commit of sub-transactions were not handled
  1588.           correctly, leading to inconsistent object data.
  1589.  
  1590.         - Packing not not mark all transactions performed before the
  1591.           pack time as "packed". Undoing these transactions lead to a
  1592.           broken database.
  1593.  
  1594.         - On win9x systems, random data seems to be added to the end
  1595.           of the file on system crashes, causing apparent file
  1596.           corruption.  Code has been added to check for this case and
  1597.           recover by truncating the file with a log message.
  1598.  
  1599.         - The Zope version was not shown in the control panel.
  1600.  
  1601.         - The binary release had the PCGI wrapper program in the wrong
  1602.           directory so PCGI installations were not successful.
  1603.  
  1604.  
  1605.     Zope 2.0 beta 3
  1606.     
  1607.       Features added
  1608.  
  1609.         - Added a 'getobject' method to ZCatalog. This allows you to more
  1610.           easily get at a cataloged object from 'searchResults'. For
  1611.           example::
  1612.           
  1613.             <!--#in searchResults-->
  1614.             <!--#var "getobject(data_record_id_).title_or_id()"--><br>
  1615.             <!--#/in-->
  1616.       
  1617.       Bugs fixed
  1618.  
  1619.         - This release fixes a bug in acquisition that caused creation of
  1620.           ZClass instances to fail under some (common) circumstances.
  1621.         
  1622.         - Copy and Paste validation machinary now takes local roles into
  1623.           account.
  1624.           
  1625.         - ZDOM now adheres more closely to the DOM spec with respect to
  1626.           Document and DOMImplementation nodes.
  1627.  
  1628.         - The main management screen will no longer show the 'Delete' or
  1629.           'Export' buttons if the user doesn't have adequate permissions
  1630.           to delete or export objects respectively.
  1631.  
  1632.       
  1633.     Zope 2.0 beta 2
  1634.  
  1635.       Features added
  1636.  
  1637.         - Added a '-r' switch to z2.py for ZServer read-only mode.
  1638.  
  1639.         - The 'null' attribute in the DTML 'var' tag is now used when
  1640.           the value being output if the Python value 'None'. Some
  1641.           people considered this to be a bug.
  1642.  
  1643.         - Permission objects are automatically created for new ZClass
  1644.           objects as part of the ZClass wizard. 
  1645.  
  1646.         - For Python programmers, there is a new convenience function for
  1647.           debugging in the Zope package. 
  1648.  
  1649.           For example, to debug method spam in the Zope debugger::
  1650.  
  1651.             python
  1652.             import Zope
  1653.             Zope.debug('spam', d=1)
  1654.  
  1655.       Bugs fixed
  1656.  
  1657.         - Changed the logic used to detect binary content types to
  1658.           only look for control characters. The previous version
  1659.           incorrectly considered certain Latin-1 characters as
  1660.           binary.
  1661.  
  1662.         - The ZService.py used to implement Zope as a Win32 service 
  1663.           on NT has been updated to handle a difference in the way
  1664.           .dll files are found on internationalized versions of NT.
  1665.  
  1666.         - The configure.in file used to build PCGI has been updated.
  1667.  
  1668.         - Several fixes to DateTime were added to provide better
  1669.           behavior on machines with unrecognized time zone names.
  1670.  
  1671.         - Conflict errors, which occur when simultaneous writes occur
  1672.           to the same object in multiple database connections, are now
  1673.           handled correctly by re-executing (up to three times)
  1674.           the requests that lost the race condition.
  1675.  
  1676.         - Error formatting with standard_error_message has been moved
  1677.           to the object publisher via a new published module hook,
  1678.           'zpublisher_exception_hook'.  In addition to enabling
  1679.           conflict error handling, this fixed two other bugs:
  1680.  
  1681.            - Error handling in ExternalMethods and in DTML methods or
  1682.              documents called from other DTML documents or methods
  1683.              caused errors to be propagated in ways that defeated use of
  1684.              the try tag and other forms of error handling.
  1685.  
  1686.            - Errors raised before or after calling published objects
  1687.              were not formatted.
  1688.  
  1689.         - Errors in processing form variables, such as missing or
  1690.           miss-typed values resulted in server errors, rather than in
  1691.           formatted error reports.
  1692.  
  1693.         - Database browsing didn't work for ZGadflyDA database adapters.
  1694.  
  1695.         - Transaction meta data were not captured correctly by
  1696.           ZPublisher, which made the undo log look odd wrt the user
  1697.           who performed the transaction.
  1698.  
  1699.         - Permissions for version operations were not set correctly. This
  1700.           made it hard to delegate work to be done in versions and to
  1701.           separate version participation from version finalization.
  1702.           To fix this, it was necessary to split the "Join/Leave" view
  1703.           into separate "Join/Leave" and "Save/Discard" views.
  1704.  
  1705.         - No remark could be entered when discarding versions.
  1706.         
  1707.         - Fixed a ZServer kill_zombies bug which kept ZServer from killing
  1708.           hung connections.
  1709.           
  1710.         - Improved ZServer's handling of slightly broken HTTP requests.
  1711.  
  1712.         - Fixed a properties setting permission bug.
  1713.       
  1714.         - Fixed a product permissions registration bug that allowed
  1715.           product permission data to get lost.
  1716.  
  1717.         - Updated the MailHost product to use the new product initialization
  1718.           procedure. This fixed a MailHost adding permissions bug.
  1719.           
  1720.         - Made Z Class icons visible to everyone. This way you can view a
  1721.           Z Class icon without having and permissions on the Z Class.
  1722.  
  1723.         - Objects were sometimes incorrectly acquired do a bug in
  1724.           detecting attribute errors during acquisition. This led to
  1725.           errors getting covered up or obscured.
  1726.  
  1727.         - There was a memory leak in acquisition.
  1728.  
  1729.         - Some thread-safety problems were fixed.
  1730.  
  1731.         - DTML entity references (e.g. '&dtml-spam;') with missing
  1732.           semicolons  (e.g. '&dtml-spam') caused infinite loops.
  1733.  
  1734.         - Extra spaces around expressions in DTML caused syntax errors.
  1735.  
  1736.         - Broken objects, which are used as surrogates for objects
  1737.           that can no longer be instantiated due to missing product
  1738.           installations, no longer use HTML markup in their text
  1739.           representation, as this caused odd effects in HTML titles.
  1740.  
  1741.         - A number of fixes were made to the new DOM support.
  1742.   
  1743.         - Versions could be deleted by users working in the deleted
  1744.           versions. This led to strange paradoxical effects.  Attempts
  1745.           to delete a version or an object containing a version by
  1746.           someone working in a version now lead to errors.
  1747.  
  1748.         - ZGadflyDA has been updated to use the current (as of this
  1749.           release) version of Gadfly. (Note that this had been
  1750.           incorrectly reported as a 2.0 beta 1 feature.)
  1751.  
  1752.         - Using an sql method in a version sometimes caused the method
  1753.           to be locked, making it unusable by non-version users. This
  1754.           was due to the way that column meta-data was managed.  Now
  1755.           column meta-data, used by report creation wizards, is only
  1756.           safed when sql methods are tested.
  1757.  
  1758.         - In StructuredText, list items could not directly introduce
  1759.           example code.
  1760.  
  1761.         - Undoing transactions that discarded versions did not cause
  1762.           versions to appear non-empty.
  1763.  
  1764.         - Temporary files were created for file storages that were
  1765.           opened in read-only mode.
  1766.  
  1767.         - A bug in FileStorage and DemoStorage didn't show you more
  1768.           than the first 20 previous transactions in the Undo log.
  1769.  
  1770.         - An incorrect contents view was returned after adding a File
  1771.           object.
  1772.  
  1773.         - On the cache parameters page, the number of bytes, rather
  1774.           than the number of objects in the database was shown.
  1775.  
  1776.       Note:
  1777.  
  1778.         The section for Zope 2.0 alpha 4 did not mention that ZCatalog 
  1779.         is now shipped with the Zope core.
  1780.  
  1781.  
  1782.     Zope 2.0 beta 1
  1783.  
  1784.       Backward incompatibility
  1785.  
  1786.         - ZODB 2 is no longer supported or included!
  1787.  
  1788.         - The utility script bbb.py, no longer supports
  1789.           xml output.
  1790.     
  1791.       Known problems
  1792.  
  1793.         - Handling of conflict errors hasn't been implemented.  When
  1794.           two threads try to update the same object, one will get a
  1795.           conflict error. By beta release 2, requests that get conflict
  1796.           errors will be retried until they succeed (or fail without a
  1797.           conflict error) or until a maximum number of retries is
  1798.           exceeded.
  1799.  
  1800.       Features added
  1801.       
  1802.         - The default ports used by ZServer have been changed. The
  1803.           new default ports are: 8080 for HTTP, 8021 for FTP and
  1804.           8099 for the monitor server.
  1805.  
  1806.         - ZServer now uses the zLOG logging mechanism for informational and
  1807.           warning messages.
  1808.       
  1809.         - ZServer now includes a fairly stable NT service ZService.py
  1810.  
  1811.         - 'access' file now can use SHA-1 hashing, and now does by
  1812.           default
  1813.  
  1814.         - 'zpasswd.py' added to top directory to manage this
  1815.           new 'access' file
  1816.  
  1817.         - A number of changes have been made to enhance security
  1818.           control in through-the-web-developed products:
  1819.  
  1820.           - There are new "Permission" objects that can be added to 
  1821.             Products.  Permission objects provide a mechanism for
  1822.             defining new permissions. These new permissions show up in
  1823.             folder security screens.
  1824.  
  1825.           - Factory objects can have permission settings. This affects
  1826.             whether items show up in add lists and who can use factories.
  1827.  
  1828.           - Objects in products now have permission mapping rather
  1829.             than direct permission settings just like ZClass methods.
  1830.  
  1831.           - New permissions cannot be defined in ZClasses any longer.
  1832.             Rather, ZClasses can select from global permissions,
  1833.             including permissions defined with permission objects.
  1834.  
  1835.           Here's a sample scenario:
  1836.  
  1837.             1. Add a ZClass, "Container" with the option to create a
  1838.                factory and constructor methods.
  1839.  
  1840.             2. Add a permission object with the permission "Manage
  1841.                Containers".
  1842.  
  1843.             3. Change the permission of the factory created in step 1
  1844.                to "Manage Containers".
  1845.  
  1846.             4. Visit the ZClass created in step 1, view the "Define
  1847.                Permissions" view and map the "Create class instances"
  1848.                permission to "Manage Containers".
  1849.  
  1850.             5. Visit the constructor DTML Methods created in step 1,
  1851.                view the "Define Permissions" view and map the "View"
  1852.                permission to "Manage Containers".
  1853.  
  1854.           In this scenario, we created a ZClass and made it addable
  1855.           only by users (roles) that have the "Manage Containers" permission.
  1856.  
  1857.         - There is a new module, Shared.DC.THUNK
  1858.           (lib/python/Shared/DC/THUNK.py) that provides a mix-in class
  1859.           that implements ZODB 3 transaction protocols and that
  1860.           provides course-grained locking logic that should allow many
  1861.           non-thread-safe database adapters to be usable in
  1862.           multi-threaded Zope applications.  The Gadfly database
  1863.           adapter has been updated to use this mix-in class.
  1864.  
  1865.         - The transaction management mix-in classes (Shared.DC.TM.TM
  1866.           and Shared.DC.THUNK.THUNKED_TM) now provide a lower-level
  1867.           transaction management protocol.  Database adapters that mix
  1868.           these in should:
  1869.  
  1870.             - Call 'self._register()' when performing database
  1871.               queries, and
  1872.  
  1873.             - If necessary, override methods:
  1874.  
  1875.                 _begin() -- Which is called to begin a transaction,
  1876.  
  1877.                 _finish() -- Which is called to finish a transaction,
  1878.                              and save changes, or
  1879.  
  1880.                 _abort() -- Which is called to abort (rollback) a transaction,
  1881.                             and discard changes, or
  1882.  
  1883.         - Object export now provides an XML export option and import
  1884.           files may be in Zope export format or XML format.
  1885.  
  1886.         - Zope objects that support the Zope management framework now
  1887.           support the DOM 1.0 read interfaces.  This allows DOM read
  1888.           methods and attributes to be usable with Zope objects and
  1889.           Python DOM tools, like FourThought's 4XSL to work with Zope
  1890.           objects.  
  1891.  
  1892.           Note that DOM-defined attributes are defined with "get"
  1893.           methods. For example, to get the DOM-defined "parentNode"
  1894.           attribute, use: 'object.getParentNode()'.
  1895.  
  1896.         - The pyexpat extension module for using James Clark's 
  1897.           expat library for parsing XML is included in the
  1898.           distribution as Shared.DC.pyexpat.
  1899.  
  1900.       Bugs Fixed
  1901.       
  1902.         - You can no longer cd to an acquired directory in ZServer FTP.
  1903.  
  1904.         - A number of changes were made for thread safety.  This was not as
  1905.           hard as it sounds, since persistent objects are always
  1906.           thread-safe. (Well, only one thread accesses any particular
  1907.           copy of a persistent object.)  The biggest issue here is
  1908.           mutable global variables, mutable objects stored in classes, 
  1909.           mutable default Python function arguments, and global
  1910.           variables in extensions.
  1911.  
  1912.  
  1913.     Zope 2.0 alpha 4
  1914.  
  1915.       Backward incompatibility
  1916.  
  1917.         - The old ZopeHTTPServer is no longer supported or included.
  1918.           Use ZServer.
  1919.  
  1920.       Features added
  1921.  
  1922.         - The let and return tags were added to DTML.
  1923.  
  1924.         - Several new input form types were added:
  1925.  
  1926.             :default -- allows you to specify default values
  1927.  
  1928.             :record -- allows you to combine multiple form variables
  1929.                        into a single input variable.
  1930.  
  1931.                 For example::
  1932.  
  1933.                    <input name="date.year:record:int">
  1934.                    <input name="date.month:record:int">
  1935.                    <input name="date.day:record:int">
  1936.  
  1937.                 will result in a single variable, 'date', with
  1938.                 attributes 'year', 'month', and 'day'.
  1939.  
  1940.             :records -- allows you to input a list of records (ie a
  1941.                         table)
  1942.  
  1943.             :ignore-empty -- If the field if the value is an empty
  1944.                              string.
  1945.  
  1946.           For more information, see the section on "Form variable
  1947.           types" in http://www.zope.org/Documentation/Reference/Trinkets.
  1948.  
  1949.         - In the startup script, z2.py:
  1950.  
  1951.         - The startup script, z2.py, has additional documentation on
  1952.           providing empty strings as arguments.
  1953.     
  1954.         - Added a -P option to the startup script, z2.py, to specify a
  1955.           base port for the various servers. For example::
  1956.         
  1957.             python z2.py -P8000 
  1958.         
  1959.               is equivalent to:
  1960.         
  1961.             python z2.py -w8080 -f8021 -m8099
  1962.         
  1963.               This is a convenient short-hand for systems with many zserver
  1964.               instances running.
  1965.     
  1966.         - Added an -l option to the startup script, z2.py, to specify
  1967.           the location of the ZServer hit log. If the location is a
  1968.           relative path, then it is assumed to be rooted in the 'var'
  1969.           directory.
  1970.  
  1971.         - A progress indicator was added to the database conversion
  1972.           utility, utilities/bbb.py.
  1973.  
  1974.         - The PCGI installer now writes the PCGI info file to use ZODB 3
  1975.           rather than ZODB 2.
  1976.     
  1977.         - The default content is provided in both ZODB 2 and ZODB 3
  1978.           format.
  1979.  
  1980.         - There is a new logging framework for reporting errors from
  1981.           Python-level code.  See the module zLOG.py for details.
  1982.  
  1983.           For the time being, to turn on logging, set the environment
  1984.           variable STUPID_LOG_FILE to a file name or to an empty
  1985.           string to log to standard error.  We will eventually provide
  1986.           a more formal and functional logging configuration
  1987.           interface.
  1988.  
  1989.         - The hooks used by objects that modify their environment were
  1990.           changed.  The new hooks are:
  1991.  
  1992.             manage_addHook -- called after an object has been added
  1993.  
  1994.             manage_beforeDelete -- called before an object is deleted
  1995.  
  1996.             manage_afterClone -- called after an object has been
  1997.                copied. This should only be used by object that 
  1998.                capture their identity is some way other than their 
  1999.                id attribute or persistent id. (It's really for
  2000.                ZClasses, which have global ids.)
  2001.  
  2002.         - Pack is now supported for ZODB3 File Storages.
  2003.     
  2004.         - The header output by manage_tabs now shows whether the
  2005.           current object has been modified or locked by a version and
  2006.           shows the version if the version isn't the current working
  2007.           version. 
  2008.     
  2009.             - The locked-in-version decoration in the object management
  2010.               contents view shows the locking version if the version isn't
  2011.               the current working version.
  2012.     
  2013.             - Several demonstration ZODB Storage implementations have been
  2014.               added. See lib/python/ZODB/DemoStorage.py and
  2015.               lib/python/ZODB/dbmStorage.py.
  2016.     
  2017.         - Subtransactions have been added (instead of temporary
  2018.           versions). If a true argument is given in a transaction commit
  2019.           or abort call (e.g. 'get_transaction().commit(1)'), then
  2020.           the commit or abort applies to a subtransaction of the
  2021.           current transaction.  This is useful in a number of ways,
  2022.           including:
  2023.     
  2024.                 o Subtransaction commits on requests that work with lots
  2025.                   of data can reduce memory usage because data can be
  2026.                   removed from memory after changes are saved in a
  2027.                   subtransaction, 
  2028.     
  2029.                 o You can rollback changes due to a local error without
  2030.                   rolling back *all* of the changes made in a long
  2031.                   transaction. 
  2032.  
  2033.         - There is an advanced interface for specifying alternate
  2034.           storages for Zope.  Zope will try to import the module
  2035.           'custom_zodb' from INSTANCE_HOME and use it's Storage
  2036.           attribute. 
  2037.  
  2038.           For example, to use a Demo storage based on the standard
  2039.           File storage, you might define a 'custom_zodb' module with::
  2040.  
  2041.             import Globals, ZODB.FileStorage, ZODB.DemoStorage
  2042.  
  2043.             name='%s/Data.fs' % Globals.data_dir
  2044.  
  2045.             base=ZODB.FileStorage.FileStorage(name, read_only=1)
  2046.             Storage=ZODB.DemoStorage.DemoStorage("Demo (%s)" % name, base)
  2047.  
  2048.         - Find can now search text of SQL methods.
  2049.  
  2050.         - DTML tree tags now have a reverse option.
  2051.  
  2052.         - ZClasses now have class ids.  These class ids are registered
  2053.           in a central registry and are used when unpicking instances.
  2054.  
  2055.         - Database connections now have a sync method for
  2056.           synchronizing the connection with saved data.  This is
  2057.           useful for interactive connections to see database changes
  2058.           made by other threads.
  2059.  
  2060.         - Errors encountered when trying to unpickle object state are
  2061.           now logged, if logging is enabled.
  2062.  
  2063.         - Added an extra checkpoint to ZODB 3 FileStorage Transaction
  2064.           commit to better handle system crashes.
  2065.  
  2066.         - ZPublisher request objects now have a BODYFILE key to get
  2067.           the request body as a file for non-form non-GET requests.
  2068.  
  2069.         - Cookie support was added to the ZServer FTP server to make
  2070.           FTP access compatible with cookie-based authentication.
  2071.  
  2072.         - ZServer now includes a NT Service, 'ZServer.py' This service
  2073.           requires the Python win32 extensions. It is not yet complete
  2074.           and not yet integrated with the Zope installer. It does however
  2075.           include a large doc string.
  2076.     
  2077.         - ZServer is officially using the z2.py start script now. The old
  2078.           start.py and zinit.py were removed. Note: z2.py will call zdaemon.py
  2079.           for you, if you want to use ZServer in daemon mode on Unix.
  2080.     
  2081.         - Added a 'has_permission' method to user objects. This facilitates
  2082.           finding out if a user has access to a given object. For example::
  2083.           
  2084.             <!--#if "AUTHENTICATED_USER.has_permissions('View',someObject)"-->
  2085.     
  2086.         - The product add list is now filtered. This should keep
  2087.           objects out of the product add list for which the user does
  2088.           not have adequate permissions. This is implemented with a
  2089.           new method, 'filtered_meta_types' which returns all the
  2090.           meta_types for which a given user has permissions. Note:
  2091.           Right now ZClasses do not associate permissions with
  2092.           Products. Thus all Control Panel Products appear in the
  2093.           product add list, no matter what roles the user has.
  2094.             
  2095.         - HTTP REQUEST objects now use HTML in their string representation.
  2096.  
  2097.         - The REQUEST keys of the form BASEx and URLx, where x is
  2098.           an integer now allow x to be greater than 9.
  2099.     
  2100.         - index_html is not longer used automatically for XML-RPC
  2101.           requests.
  2102.  
  2103.         - ZPublisher debugger, 'ZPublisher.test' now accepts a 'extra'
  2104.           keyword argument with a dictionary giving extra variables to
  2105.           be added to the request. This is handy for testing methods
  2106.           that require large amounts of input data, such as file uploads.
  2107.  
  2108.         - The load_site utility ('utilities/load_site.py') now accepts
  2109.           a '-9' switch to make it work with Zope (and Principia)
  2110.           sites at revisions 1.9 and lower. 
  2111.  
  2112.       Bugs fixed
  2113.  
  2114.         - Got rid of some DOS line-endings in xmlrpclib.py that caused
  2115.           install-time module compilation to fail.
  2116.  
  2117.         - Fixed DOS line-endings in medusa/max_sockets.py
  2118.  
  2119.         - Fixed a NameError (missing TupleType) definition in
  2120.           the export/import (copy/paste) machinery.
  2121.  
  2122.         - The startup script failed on Windows because it imported the
  2123.           posix module without checking the os.
  2124.  
  2125.         - ZServer crashed when the number of simultaneous connections
  2126.           exceeded a system limit, especially on Windows. ZServer now
  2127.           stops accepting new connections when the number of active
  2128.           connections exceeds a threshold.
  2129.  
  2130.         - Accessing cached results of items() (or values() or keys())
  2131.           calls on BTrees caused core dumps if affected elements were
  2132.           deleted.  For example::
  2133.     
  2134.                  for k in abtree.keys(): 
  2135.                     del abtree[k]
  2136.  
  2137.           Note that this code is still incorrect due to the fact that
  2138.           the objects returned from abtree.items()  (or values() or
  2139.           keys()) have reference, rather than copy semantics.
  2140.  
  2141.         - Compiling Acquisition.c caused (bogus) compiler errors on
  2142.           SGI.
  2143.  
  2144.         - zdeemun wus mispeled
  2145.  
  2146.         - Local roles were not handled correctly when filtering
  2147.           management views.
  2148.  
  2149.         - Copying and pasting ZClass instances copied and pasted their
  2150.           ZClasses too, effectively disconnecting them from their
  2151.           managed ZClasses. The same thing happened when ZClass
  2152.           instances were exported and imported.
  2153.  
  2154.         - The Database area in the control panel was broken.
  2155.  
  2156.         - Copy and paste of multiple objects was broken.
  2157.  
  2158.         - Copy and paste of ZClass methods was broken.
  2159.  
  2160.         - Copy and paste of ZClass properysheets was enabled and
  2161.           broken. It is now disabled.
  2162.  
  2163.         - Accidental import of BoboPOS in processes using ZODB (3)
  2164.           caused strange errors.
  2165.  
  2166.         - A bug in batch processing caused batch processing to hang or
  2167.           give incorrect results.
  2168.  
  2169.         - DocumentTemplate-based classes, like DTMLDocument and
  2170.           DTMLMethod could not be subclassed correctly. 
  2171.  
  2172.         - There was a memeory leak in the DTML try tag.
  2173.  
  2174.         - When adding folders with user databases, no check was made
  2175.           to make sure the user was permitted to add a user database.
  2176.  
  2177.         - Broken objects weren't created for objects whose class could
  2178.           not be found when using ZODB 3.
  2179.  
  2180.         - The 'self' argument wasn't properly passed to external
  2181.           methods used in ZClasses.
  2182.  
  2183.         - The Setup file in the SearchIndex package had an unneeded -I
  2184.           option that caused compilation errors on some platforms.
  2185.  
  2186.         - ZGadflyDA transactions were not committed.
  2187.  
  2188.         - ZClasses didn't provide an interface to edit their titles.
  2189.  
  2190.         - Propertysheets were broken for ZClasses that inherited from
  2191.           built-in classes, like Folder and DTMLDocument.
  2192.  
  2193.         - Propertysheets were disabled for instances by default.  Now,
  2194.           propertysheets have the "manage properties" permission by
  2195.           default.
  2196.  
  2197.         - The navigation pane wasn't updated when classes were added.
  2198.  
  2199.         - Changes in ZClasses were not properly propagated to all
  2200.           database connections using ZODB3.
  2201.  
  2202.         - Database connections were not closed correctly under heavy
  2203.           load when the number of application threads exceeded the
  2204.           number of database connections in the connection pool. This
  2205.           lead to Zope locking up under load if the application thread
  2206.           count was increased using the z2.py -t option.
  2207.  
  2208.         - undo in ZODB 3 didn't properly refresh objects.
  2209.  
  2210.         - export and import was broken for ZODB 3.
  2211.           
  2212.         - Fixed ZServer HTTP zombie killing. Now hung connections are
  2213.           successfully closed.
  2214.  
  2215.         - A bug in handling the case when a file was created on open
  2216.           without the create flag caused weird errors on windows.
  2217.  
  2218.         - The REQUEST BASE1 key was not computed correctly when
  2219.           SCRIPT_NAME was an empty string.
  2220.  
  2221.         - It was impossible to return an empty list or dictionary to
  2222.           an XML-RPC request. 
  2223.  
  2224.         - The database conversion script fails when the first record
  2225.           in the input file lacked properly-formatted transaction
  2226.           data.  The conversion script also didn't work on some
  2227.           systems due to an incorrect 'flush' call on the *input*
  2228.           file. 
  2229.  
  2230.         - Factories that were also ZClass methods didn't get
  2231.           unregistered properly when they were deleted.
  2232.  
  2233.  
  2234.     Zope 2.0 alpha 3
  2235.  
  2236.       Features added
  2237.  
  2238.         - XML-RPC support
  2239.  
  2240.           All Zope objects are now XML-RPC servers.
  2241.  
  2242.         - ZODB 2 (aka BoboPOS) to ZODB 3 FileStorage database conversion
  2243.  
  2244.           An option has been added to the bbb.py script in the
  2245.           utilities directory to convert ZODB 2 database files to ZODB
  2246.           3 format. The bbb.py script now accepts an '-f' option that
  2247.           takes an argument specifying an output file name.  For
  2248.           example, to convert the ZODB 2 data file, Data.bbb, in the
  2249.           var directory, to ZODB 3 FileStorage format::
  2250.  
  2251.             python utilities/bbb.py -f var/Data.fs var/Data.bbb
  2252.  
  2253.           Note that version data are not converted.
  2254.  
  2255.         - In Z Classes, Methods and Property Sheets now have a "Define
  2256.           Permissions" management tab to map permissions. This tab used
  2257.           to be labeled "Security".
  2258.  
  2259.         - ZServer's FTP server now attempts to display an object's owner
  2260.           as defined in local roles.  
  2261.  
  2262.       Bugs fixed
  2263.  
  2264.         - The cache management screens were broken
  2265.  
  2266.         - Local roles on DTML Methods and Documents were not persistent.
  2267.  
  2268.         - ZServer's select trigger has been updated and now shouldn't give
  2269.           errors when running ZServer as another users.   
  2270.  
  2271.         - The tree tag used persistent object ids in ways that were 
  2272.           not compatible with ZODB 3.  This caused strange behavior
  2273.           like weird content-types and invalid state messages.
  2274.  
  2275.         - The DTML In tag no longer handled batch processing correctly, 
  2276.           and sometimes got into infinite loops.  This was due to a very
  2277.           old bug that was made effective by Python 1.5.2.
  2278.  
  2279.         - Objects that could not be loaded because their implementing modules
  2280.           (or packages) had been removed were not handled properly as
  2281.           broken objects when ZODB 3 was used.
  2282.  
  2283.         - The DTML Python string format did not allow expressions for 
  2284.           simple variable insertion.  Expression insertion is now
  2285.           allowed if the var tag name if the var tag name is supplied,
  2286.           as in::
  2287.  
  2288.             %(var expr="x+1")s
  2289.  
  2290.           Note that, because of this change, the var tag name must
  2291.           also be supplied when a variable named 'var' is inserted, as
  2292.           in::
  2293.  
  2294.             %(var var)s
  2295.  
  2296.  
  2297.     Zope 2.0 alpha 2
  2298.  
  2299.       Features added
  2300.  
  2301.         - There is a new optional EXPERIMENTAL HTML DTML syntax.  As
  2302.           an alternative to SSI syntax, you can now use ordinary HTML
  2303.           syntax, as in:
  2304.  
  2305.             <dtml-in objectIds>
  2306.               <dtml-var sequence-item>
  2307.             </dtml-in>
  2308.  
  2309.           You can also use an entity-reference syntax for the var tag
  2310.           as an alternative to the tag syntax.  For example::
  2311.  
  2312.             &dtml-foo;
  2313.  
  2314.           is equivalent to::
  2315.  
  2316.             <dtml-var foo>
  2317.  
  2318.           and is especially handy in attributes::
  2319.  
  2320.             <a href="&dtml-foo;">
  2321.  
  2322.           Both the new syntax and the SSI syntax are allowed in the
  2323.           same document.  In fact, if you were really twisted, you
  2324.           could:
  2325.  
  2326.             <dtml-in objectIds>
  2327.               <dtml-var sequence-item>
  2328.             <!--#/in-->
  2329.  
  2330.           IMPORTANT
  2331.  
  2332.              This feature really is EXPERIMENTAL.  It could disappear
  2333.             someday, depending on how people like it.  We'd really like
  2334.             to get feedback on how useful this feature is.
  2335.  
  2336.         - reverse options were added to the in and tree tags.
  2337.  
  2338.         - The startup script, z2.py, has a -D option to turn on
  2339.           debugging mode.
  2340.  
  2341.         - Made environment variable settings work with the http
  2342.           server. So now you can do things like ./z2.py -w 8888
  2343.           SCRIPT_NAME=Zope and actually have the specified SCRIPT_NAME
  2344.           override the normal SCRIPT_NAME. This is Useful for using ZServer
  2345.           behind a proxy.
  2346.  
  2347.         - Added support for the Medusa monitor server.
  2348.  
  2349.         - There's a first cut at a ZServer NT service. This is Zope on
  2350.           NT's answer to zdeamon.py
  2351.  
  2352.           It actually seems to work, though there's still a fair
  2353.           amount missing.
  2354.  
  2355.         - The error messages for missing or miss-formatted access
  2356.           files was improved.
  2357.  
  2358.         - A new debugging method, manage_debug, has been added to
  2359.           Control_Panel to monitor the Zope process for possible
  2360.           memory leaks.
  2361.  
  2362.         - The name, 'this', has been added to the namespace available
  2363.           to construction methods to provide a function for computing
  2364.           the destination object.  The name, 'this' is essentially
  2365.           equivalent to 'Destination' and 'Destination' will be
  2366.           deprecated eventually.
  2367.  
  2368.         - The title of the main Zope management interface now includes
  2369.           a full URL.
  2370.  
  2371.         - Folders that have (or acquire) index_html methods now have
  2372.           view tabs for viewing index_html.
  2373.  
  2374.         - On browsers that support Java Script, the "Add" button is
  2375.           omitted and the add form is visited as soon as a selection
  2376.           is made from the select list.
  2377.  
  2378.         - The python-pickle format used to export data from ZODB 2 was
  2379.           updated to handle string data differently.
  2380.  
  2381.         - Update syslog clients to try for SOCK_DGRAM first, since newer
  2382.           syslogd won't accept SOCK_STREAM connections (Collector #888).
  2383.  
  2384.       Bugs fixed
  2385.  
  2386.         - A number of bugs and features were left out of the 
  2387.           release notes for Zope 2.0 alpha 1.  The notes for
  2388.           Zope 2.0 alpha 1 have been updated substantially.
  2389.  
  2390.         - There was a serious memory leak introduced when a security
  2391.           bug was fixed in 1.10.0.
  2392.  
  2393.         - There was a memory leak in ZODB 3 persistent objects, which
  2394.           now manage object IDs as persistent objects.
  2395.  
  2396.         - The Python 1.5.2 cgi module didn't work with Zope.  
  2397.           Zope now includes its own fixed version of the module.
  2398.  
  2399.           This bug caused FTP, Netscape Publishing and WebDAV to fail.
  2400.  
  2401.         - A bug in transaction management caused Gadfly requests to
  2402.           fail. Other database adapters need to be updated.
  2403.  
  2404.         - Running ZServer as nobody failed due to the order in which
  2405.           the log file was opened.
  2406.           
  2407.         - Added fix contributed by Brian Hooper for HTTP Clients which
  2408.           don't always spell their HTTP headers correctly.
  2409.  
  2410.         - A number of classes didn't get there reference-counts
  2411.           reduced when instances were destroyed.  This confused the
  2412.           new memory allocation monitoring tool.
  2413.  
  2414.         - New user folders had no effect because they did not get
  2415.           properly registered in their containing folders.
  2416.  
  2417.         - Changes made to factory objects were lost when a process was
  2418.           restarted. 
  2419.           
  2420.         - Clicking on the 'Help' caused the help information to be
  2421.           displayed in the current frame, rather than in a new
  2422.           window. 
  2423.  
  2424.         - Shutting down Zope attempted to save the database index even
  2425.           when Zope was run in read-only mode.
  2426.  
  2427.         - A number of fixes were made in the Date-Time support.
  2428.  
  2429.         - Batch processing in the in tag sometimes failed.
  2430.  
  2431.         - Sites with custom roles in the top-level application
  2432.           object did not pick up the new 'Owner' role.
  2433.           
  2434.         - Content-type detection had problems in DTML documents and
  2435.           methods. 
  2436.  
  2437.         - Some cookie expiration dates used 2-digit years.
  2438.  
  2439.         - Error values for errors raised by ExternalMethods were lost.
  2440.  
  2441.         - Values returned by absolute_url were not URL quoted.
  2442.  
  2443.         - Extra newlines were prepended to documents when they were
  2444.           edited.
  2445.  
  2446.         - Objects ids were not properly quoted in a number of places,
  2447.           because id quoting was unnecessary until recent relaxation
  2448.           of the rules for ids.
  2449.           
  2450.         - ExternalMethods are now automatically reloaded when running
  2451.           in debug mode.
  2452.  
  2453.         - Search interfaces generated by the search interface wizard
  2454.           no longer include a "Cancel" button.
  2455.  
  2456.         - Errors were masked by a bug in handling ZODB3 transaction
  2457.           aborts. 
  2458.  
  2459.         - The ZODB 3 cache manager deactivated objects too quickly,
  2460.           causing performance to degrade.
  2461.  
  2462.         - BASEx request variables were not computed correctly when
  2463.           SCRIPT_NAME was not empty.
  2464.  
  2465.         - The URLx variables couldn't be computed in some cases when
  2466.           using ZServer.
  2467.  
  2468.  
  2469.     Zope 2.0 alpha 1
  2470.  
  2471.       BACKWARD INCOMPATIBILITY
  2472.  
  2473.         - A change was made to the way ZClasses are constructed.
  2474.  
  2475.           Previously, the __call__ method was an alias for the
  2476.           index_html method which took took an id and a request
  2477.           and created a new instance and added the instance to
  2478.           the destination.
  2479.           
  2480.           Now, the __call__ method simply calls the underlying
  2481.           managed class with the supplied arguments to create and
  2482.           return an instance.  The instance is not added to a
  2483.           folder.
  2484.           
  2485.           The index_html method is now an alias for the
  2486.           createInObjectManager method, which does what the
  2487.           index_html method did before.
  2488.           
  2489.           There is a new method, fromRequest, that takes an id
  2490.           and a request and creates a new instance.  It does not
  2491.           at the instance to a destination.
  2492.  
  2493.       Features Added
  2494.  
  2495.         - Integration of ZODB 3
  2496.  
  2497.         - The ZClass construction interface has been cleaned up to
  2498.           make construction of ZClasses a little easier from Python.
  2499.  
  2500.         - When adding ZClasses, there is now an option to
  2501.           automatically create construction methods and a factory.
  2502.  
  2503.         - "Management" screens now *only* show tabs a user permitted
  2504.           to see.  Used in combination with carefully selected roles, 
  2505.           this change provides an adaptable management interface.
  2506.  
  2507.         - Instance homes can now have local Products directories.
  2508.  
  2509.         - There is a new ZServer start up script that can be used without
  2510.           modification and that integrates process management.  This
  2511.           script replaces the ZServer 'start.py' and 'zinit.py' scripts.
  2512.  
  2513.         - When the new startup script is used, then the control panel
  2514.           shows a "Restart" button which causes the Zope process to
  2515.           exit and be restarted and a "Shutdown" button that causes Zope 
  2516.           to exit and not be restarted.
  2517.  
  2518.         - There is a *very* rough cut at a centralized version manager
  2519.           in the control panel.  This is only functional when the
  2520.           ZODB3 database is used.  This feature will mature
  2521.           significantly before the final 2.0 release.
  2522.    
  2523.         - A new Zope icon was added, and the "powered by Zope" icon
  2524.           has been updated.
  2525.  
  2526.         - Made DTMLDocuments, DTMLMethods, Images, Files and Folders
  2527.           subclassable by ZClasses.
  2528.  
  2529.         - ZClass property sheets can now have read and modify
  2530.           permissions.
  2531.  
  2532.         - An "add list" name can be specified when creating a ZClass.
  2533.           If specified, then construction methods and a factory are
  2534.           created. This makes the class immediately instantiatable and
  2535.           provides construction method examples.
  2536.  
  2537.         - The ZClass basic property sheet now shows base classes.
  2538.  
  2539.         - Changed the string representation of HTTPRequest so that
  2540.           <!--#var REQUEST--> is a lot friendlier.
  2541.  
  2542.         - Added a Zope debugging short cut.  
  2543.  
  2544.           Now::
  2545.  
  2546.             import ZPublisher
  2547.             ZPublisher.Zope(path)
  2548.  
  2549.           is a shortcut for::
  2550.  
  2551.             import ZPublisher
  2552.             ZPublisher.test('Zope', path)
  2553.  
  2554.       Bugs Fixed
  2555.  
  2556.         - ZClass permission setting interfaces didn't show inherited
  2557.           permissions.
  2558.  
  2559.         - A number of bugs arising from attempts to set 
  2560.           caching headers were fixed.
  2561.  
  2562.         - Some default permissions were not set correctly.
  2563.  
  2564.         - The unused non-functioning resource-consuming Scheduler has
  2565.           been removed.
  2566.  
  2567.         - Access was given to objects without roles even if access
  2568.           would be denied to the container.
  2569.  
  2570.         - Fix submitted by Martijn Pieters:
  2571.  
  2572.           Any property type int or long, set to 0, showed up in the
  2573.           Properties Management tab as blank. This resulted in errors
  2574.           when trying to change values of other properties, etc.
  2575.  
  2576.         - Version names were computed incorrectly.
  2577.  
  2578.         - Delete and rename were broken for ZClasses.
  2579.  
  2580.         - It wasn't possible to override inherited attributes with
  2581.           methods in ZClasses.
  2582.  
  2583.         - Property values were not removed from ZClasses when property
  2584.           sheets were deleted.  This made it impossible to re-add a
  2585.           property from a deleted property sheet.
  2586.  
  2587.         - Generated property view and edit forms for ZClass property
  2588.           sheets had a number of problems.
  2589.  
  2590.         - The propertysheets property sheet should only allow addition of
  2591.           property sheets.
  2592.  
  2593.  
  2594.     Zope 1.11.0 pr1, which should have been named Zope 2.0.0 alpha 0.
  2595.       
  2596.       Lots has changed in this release. The major news is ZClasses and WebDAV.
  2597.       
  2598.       Features Added
  2599.  
  2600.         - Added WebDAV support. See http://webdav.zope.org/ for details.
  2601.  
  2602.         - Added Z Classes. Documentation is forthcoming.
  2603.  
  2604.           ZClasses might be viewed as somewhat experimental, although
  2605.           we're using them aggressively for internal projects.
  2606.  
  2607.         - Added Property Sheets. Documentation is forthcoming.
  2608.         
  2609.         - ZServer now included in distribution.
  2610.         
  2611.         - Added new product registration interface. Documentation is
  2612.           forthcoming.
  2613.  
  2614.         - Added local roles which allow for permission settings for
  2615.           users on individual objects. This allows for 'ownership' of Zope
  2616.           objects. Added 'Owner' role to default roles, and automatic
  2617.           setting of the 'Owner' role on a created object to the user who
  2618.           created it.
  2619.         
  2620.         - Added hooks for XML-RPC support to ZPublisher. See the source
  2621.           for details. XML-RPC support is not yet finished.
  2622.         
  2623.         - Added automatic height/width detection for JPEG images.
  2624.  
  2625.         - Revised Zope error messages.
  2626.  
  2627.         - A new DTML 'try' tag added based on work by Jordan B. Baker.
  2628.           See the source for details. Documentation is forthcoming.
  2629.  
  2630.         - A new DTML 'mime' tag has been added. See the MIMETools README.txt
  2631.           for more information.
  2632.  
  2633.         - A new 'range' function added the the '_' DTML variable. 
  2634.  
  2635.         - A new 'utilities' directory is included in the distribution.
  2636.  
  2637.         - A new flag attribute, 'only', of the DTML 'with' tag
  2638.           prunes the DTML namespace to only the namespace created
  2639.           with the with tag.
  2640.  
  2641.         - Added contributed support for encoding options in the SendMail
  2642.           tag and MailHost send method.
  2643.           
  2644.         - Management tabs are now prettier and allow status messages with
  2645.           the manage_tabs_message variable.
  2646.           
  2647.         - Added a method of notifying users of changes without using a
  2648.           MessageDialog. This makes editing DTML Documents and Methods
  2649.           easier.
  2650.           
  2651.         - Added more documentation to Product add screens.
  2652.  
  2653.         - New icons for many Zope objects.
  2654.  
  2655.         - Sessions are now known as Versions.
  2656.  
  2657.         - Changed from using 'manage_main' as default management method to use
  2658.           'manage_workspace' which is a reserved method that dispatches to the
  2659.           default management interface which is the first interface defined
  2660.           in manage_options
  2661.  
  2662.         - Permission settings are now inherited by Products from their base
  2663.           classes. This means when you build a Product you only need to specify
  2664.           its particular permission settings.
  2665.  
  2666.         - Changed ZPublisher.publish_module's interface so that instead of
  2667.           providing a stdin, stdout, and stderr, you can provide a Request and
  2668.           a Response object. ZServer makes extensive use of this feature.
  2669.  
  2670.         - Added methods to HTTPRequest to allow access to ZPublishers object
  2671.           traversal. HTTPRequest.clone and HTTPRequest.resolve_url. See the
  2672.           source for more details.
  2673.           
  2674.         - Added a new "builtin" function reorder to DTML.
  2675.         
  2676.           reorder(s, [with, without]])
  2677.  
  2678.           Reorder the items in s according to the order given in with
  2679.           and with items mentioned in without removed.  Items from s
  2680.           not mentioned in with are removed.
  2681.  
  2682.           s, with, and without are all either sequences if strings
  2683.           or sequences of key-value tuples, with ordering done on the
  2684.           keys.
  2685.  
  2686.           This function is useful for constructing ordered select lists.
  2687.  
  2688.       Bugs Fixed
  2689.  
  2690.         - Added small fixes to ZopeHTTPServer in anticipation of DAV.
  2691.  
  2692.         - Construction, upload, and edit methods did not consistently
  2693.           support either string or file data.  This caused really weird
  2694.           behavior when file upload was used with out including the 
  2695.           ':string' suffix in the argument name when doing a file upload.
  2696.  
  2697.           This bug was previously (and incorrectly) reported as a 
  2698.           ZPublisher.Client problem.
  2699.  
  2700.         - Errors in ExternalMethods were masked by bugs in error
  2701.           reporting logic.  The bugs were made far more effective
  2702.           by Python 1.5.1.
  2703.  
  2704.         - Databases (or export files) created in binary distributions
  2705.           were not usable in source distributions due to cPickle
  2706.           limitations in stock Python 1.5.1.  We now link/copy the
  2707.           cPickle extension to BoboPOS to make sure that it uses the
  2708.           latest version.
  2709.  
  2710.         - Fixed registration of MailHost settings and incorrect default
  2711.           quoted-printable encoding of message bodies.
  2712.  
  2713.         - Added contributed patch that fixes bug in copied-object id
  2714.           generation.
  2715.  
  2716.         - DTML Documents and Methods now attempt to determine their
  2717.           content-type rather than assuming they are text/html.
  2718.  
  2719.         - Fixed PUT bug in determining content-type of binary files.
  2720.  
  2721.         - Added changes that allow the top level userfolder to be replaced by a
  2722.           UserDB or other userfolder-like object.
  2723.  
  2724.         - Fixed an FTP support bug that sometimes kept simple items from
  2725.           producing FTP listings.
  2726.  
  2727.         - Added URL1 instead of "." as the form target for the workspace forms --
  2728.           using "." causes NS servers to intercept the request and report an
  2729.           error, making Zope effectively unusable.
  2730.  
  2731.         - Added ZPL 1.0 and credits to copyright link in management screen.
  2732.           
  2733.         - Fixed a bug that prevented validate() from working if the top-level
  2734.           object were accessed and no default object (index_html) existed.
  2735.  
  2736.         - Fixed a logic bug in security validation that allowed access to
  2737.           unacquired objects that didn't have __roles__ even if the
  2738.           containing object was protected.
  2739.  
  2740.  
  2741.     Zope  1.10.2
  2742.  
  2743.       Bugs Fixed
  2744.  
  2745.         - Fixed a permission problem with DTMLMethod objects that caused
  2746.           errors when attempting to commit permission changes.
  2747.  
  2748.         - Factories could not determine the available methods
  2749.           when they were being edited, making them uneditable.
  2750.  
  2751.  
  2752.     Zope  1.10.1
  2753.  
  2754.       This is a Python 1.5.2 beta 2 compatibility release.
  2755.  
  2756.       A Python C API change in Python 1.5.2 beta 2 broke
  2757.       Zope.  This release contains a fix.
  2758.  
  2759.       Zope should work correctly with Python 1.5, 1.5.1 and
  2760.       beta versions of 1.5.2.
  2761.  
  2762.  
  2763.     Zope  1.10.0
  2764.  
  2765.       New Features
  2766.  
  2767.         - Added Import/Export interfaces to Folders.
  2768.  
  2769.       Bugs Fixed
  2770.  
  2771.         - Fixed a bug in ZopeHTTPServer which caused it to fail on POST
  2772.           requests without content-type headers.
  2773.  
  2774.         - PUT and file uploads would fail if the content-type could
  2775.           not be determined. Now objects created via PUT and file
  2776.           upload will default to either 'application/octet-stream'
  2777.           for binary files or 'text/plain' for non-binary files if
  2778.           no content-type can be determined from headers or filename
  2779.           extensions.
  2780.  
  2781.         - Fixed a permission bug left from a change to the Find support.
  2782.  
  2783.         - Fixed misc typos in docstrings and docs.
  2784.  
  2785.         - Fixed a bug that kept objects from being freed from the cache!
  2786.           Basically, there was never a check for inactive objects.
  2787.  
  2788.         - MailHost objects didn't do appropriate CRLF conversion or
  2789.           recognize 4xx server responses.
  2790.  
  2791.  
  2792.     Zope  1.10.0 pr1
  2793.  
  2794.       New Features
  2795.  
  2796.         - Documents generated by the search interface wizard
  2797.           no longer use tab characters.
  2798.  
  2799.         - Added a -s option to ZopeHTTPServer.  This is useful
  2800.           for emulating older sites when generating screen shots
  2801.           for creating or updating documentation.
  2802.  
  2803.         - Default bobobase now includes a Zope button along with a link
  2804.           to the Zope site. This satisfies the ZPL attribution requirement.
  2805.           The button is created by a new builtin method
  2806.           'ZopeAttributionButton'. Also, both the source and the binary
  2807.           distributions now have the same default bobobase.
  2808.  
  2809.         - Made the logic for getting SOFTWARE_HOME a bit more robust, so that 
  2810.           it handles relative paths and paths starting with '.' and '..'.
  2811.           This is useful when simply importing Main from the Python
  2812.           prompt in the lib/python directory.
  2813.  
  2814.         - The ThreadLock module has been changed to reflect changes
  2815.           in the Python API in Python 1.5.2.
  2816.  
  2817.         - The '_' variable in DTML now has the random module
  2818.           as an attribute and DateTime.DateTime as the attribute DateTime.
  2819.  
  2820.         - Added keys() and items() methods to the REQUEST object.
  2821.  
  2822.         - Added get_header() method to the REQUEST object for retrieving
  2823.           HTTP headers.
  2824.  
  2825.         - New SearchIndex package and BTree component have been added to 
  2826.           the distribution, providing low-level support for products with
  2827.           built-in searching such as Tabula and Confera.
  2828.  
  2829.         - Documents have now been split into two distinct object types:
  2830.           DTML Documents and DTML Methods. DTML Methods behave exactly
  2831.           as Document objects did. DTML Documents are similar except that
  2832.           the "client" or "self" of a DTML Document is the DTML Document
  2833.           itself rather than its parent, and DTML Documents can have
  2834.           properties.
  2835.  
  2836.         - DTML Documents, Image and File objects can now have properties.
  2837.  
  2838.         - A new PropertyManager mixin class allows developers to easily
  2839.           add properties and property management to non-Folder objects.
  2840.  
  2841.         - Added a new absolute_url method which can generate an absolute
  2842.           url for the object on which the method is called.
  2843.  
  2844.         - GIF and PNG Images now figure out their own dimensions when
  2845.           uploaded. Image height and width properties are now editable.
  2846.  
  2847.         - Images now generate themselves as html IMG tags, using an absolute
  2848.           url and correct height and width tags if possible.
  2849.  
  2850.         - There is a new form input type, boolean, for inputing boolean
  2851.           data.
  2852.  
  2853.         - Added a read_only option to the SimpleDB.MultipleRevision and 
  2854.           PickleDictionary constructors to open a database in read_only
  2855.           mode.
  2856.  
  2857.         - Added an environment variable, ZOPE_READ_ONLY, used by the
  2858.           Zope framework.  If this variable is set, then the database
  2859.           is opened in read only mode.  If this variable is set to a
  2860.           string parsable by DateTime.DateTime, then the database is
  2861.           opened read-only as of the time given.  Note that changes
  2862.           made by another process after the database has been opened
  2863.           are not visible.
  2864.  
  2865.         - Added a database_quota option to the SimpleDB.MultipleRevision and 
  2866.           PickleDictionary constructors and a
  2867.           SimpleDB.MultipleRevision.set_quota method to set a database
  2868.           quota. The quota is given as either an integer number of
  2869.           bytes, or a function taking an integer number of bytes
  2870.           argument and returning whether the quota has been exceeded.
  2871.  
  2872.         - Added an environment variable, ZOPE_DATABASE_QUOTA, used by the
  2873.           Zope framework. If this variable is set, it should be set to
  2874.           an integer number of bytes.  Additions to the database are
  2875.           not allowed if the database size exceeds the quota.          
  2876.  
  2877.         - Added size and last modification time to DTML Method and DTML
  2878.           Document edit interface.
  2879.  
  2880.         - Added a new module, BoboPOS.winlock, that provides file
  2881.           locking on windows.  This should prevent many cases of data
  2882.           corruption. 
  2883.  
  2884.         - Added FTP support to Documents, Files, Images, and Folders.
  2885.           FTP interface is detailed in OFS/FTPInterface.py though it may
  2886.           change. Basic FTP support was also added to SimpleItem to make
  2887.           it easier for Zope objects to support FTP.
  2888.  
  2889.       Bugs Fixed
  2890.  
  2891.         - Permissions for manage_clone method were wrong, meaning that
  2892.           essentially only managers could use it.
  2893.  
  2894.         - File paths that showed up in tracebacks reflected the paths the 
  2895.           files had when they were compiled (at distribution build-time).
  2896.           The compiled-in paths have been changed to be relative to the
  2897.           Zope installation directory.
  2898.  
  2899.         - Fixed a bug in ZPublisher's special handling the "cancel"
  2900.           submit buttons. The test for the cancel button was case
  2901.           sensitive.  I changed it so it would accept any case, as
  2902.           well as extra spaces.
  2903.  
  2904.           Cancel buttons should probably be handled using the new
  2905.           :method form type, but this would require the presense of an
  2906.           appropriate redirect method.  Perhaps there should be
  2907.           a :redirect form type.
  2908.  
  2909.         - Date strings with years < 31 were not accepted, even
  2910.           through the documentation says they should be.
  2911.  
  2912.         - If Zope crashed or was unable to completely write a database
  2913.           record, then on restart, a data corruption error was reported.
  2914.           Now, truncated records are removed if necessary on start up.
  2915.           If necessary, other records are removed as well to avoid 
  2916.           partially-written transactions.
  2917.  
  2918.         - Lack of sys.argv in the win32 service version of Zope caused 
  2919.           it to raise errors under certain conditions.
  2920.  
  2921.         - Several HTTP PUT related bugs were fixed.
  2922.  
  2923.         - Simple items did not have an objectValues method, which caused
  2924.           odd behavior in certain tree tags since the method would be
  2925.           acquired from the parent of the simple item.
  2926.  
  2927.         - The Find form in the management interface depended on javascript
  2928.           to function properly.
  2929.  
  2930.         - Added a fix to compensate for the fact that Apache servers may 
  2931.           rename the entire cgi environment when mod_rewrite rules are 
  2932.           used in .htaccess files.
  2933.  
  2934.         - If system clocks were changed, so that database records 
  2935.           had records in the "future", then database corruption could
  2936.           either occur or be incorrectly reported.  Now this situation
  2937.           results in an informative error message and corruption does
  2938.           not occur.
  2939.  
  2940.  
  2941.     Zope 1.9.0
  2942.  
  2943.       New Features
  2944.  
  2945.         - Zope now provides better information about products.  If a 
  2946.           Product has a README.txt, then it will be readable through
  2947.           the product management interface.   
  2948.  
  2949.           If a product encounters an error during startup, the
  2950.           traceback is available through the product management
  2951.           interface.
  2952.  
  2953.         - Cache statistics are displayed in minutes, rather than
  2954.           seconds.
  2955.  
  2956.         - Products can define the attribute '__module_aliases__' in
  2957.           their '__init__' modules that specifies aliases for modules
  2958.           used in the product.  This is useful if module names have
  2959.           changed and the database contains pickles refering to the
  2960.           old modules.  The attribute should be a sequence of
  2961.           tuples. Each tuple has a (dotted) module name and a module.
  2962.  
  2963.       Bugs Fixed
  2964.  
  2965.         - Development on ZopeHTTPServer has been frozen in anticipation
  2966.           of the switch to Medusa. Therefor ZopeHTTPServer still does
  2967.           support PUT. Sorry.
  2968.  
  2969.         - ZPublisher.Client used the obsolete rand module.
  2970.  
  2971.         - Errors occuring during product import caused Zope to fail to come
  2972.           up.
  2973.  
  2974.         - Product version information was not displayed correctly.
  2975.  
  2976.         - ZGadflyDA cached table meta-data which lead to missleading
  2977.           information when browsing databases.
  2978.  
  2979.  
  2980.     Zope 1.9 beta 3
  2981.  
  2982.       New Features
  2983.  
  2984.         - Z SQL Methods (FKA Aqueduct) and the Z Gadfly Database Adapter
  2985.           are now included.
  2986.  
  2987.         - The argument handling for ZopeHTTPServer has been changed to 
  2988.           be a bit more flexible wrt the order of argumements.  
  2989.           While options must still come first, environment settings
  2990.           can be given in any order.  This makes startup scripts loke
  2991.           serve.py quite a bit simpler.
  2992.  
  2993.         - ZopeHTTPServer now sports preliminary support for PUT publishing.
  2994.           
  2995.         - ZopeHTTPServer now serves from port 9673 by default, not 8080.
  2996.  
  2997.       Bugs fixed
  2998.  
  2999.         - The start.bat file used to start ZopeHTTPServer on win32 was
  3000.           misnamed and didn't correctly pass command-line arguments.
  3001.  
  3002.         - Win32 machines without an existing Python installation had problems
  3003.           due to PYTHONPATH bootstrapping.
  3004.  
  3005.         - The included ZopeHTTPServer was failing to start correctly on
  3006.           win32 machines that were not connected to the network.
  3007.  
  3008.  
  3009.     Zope 1.9 beta 2
  3010.  
  3011.       In addition to various documentation updates, this release includes:
  3012.  
  3013.       New Features
  3014.  
  3015.         - Changed serve.py to accept ZopeHTTPServer command-line options.
  3016.  
  3017.         - Added a -P option to the ZopeHTTPServer to specify a file
  3018.           to contain the process ID.  This allows a script to stop
  3019.           the process on Unix.
  3020.  
  3021.         - Added support for the environment variables, Z_REALM and
  3022.           Z_DEBUG_MODE to set an authentication realm and to
  3023.           enable debug mode.
  3024.  
  3025.       Bugs fixed
  3026.  
  3027.         - External methods were broken due to differences in 
  3028.           Python 1.4 and Python 1.5 comparison semantics.
  3029.  
  3030.         - ZopeHTTPServer command-line environment settings
  3031.           were not available in os.environ.
  3032.  
  3033.         - Some class references were wrong in examples in the ExtensionClass
  3034.           documentation.
  3035.  
  3036.         - INSTANCE_HOME was not set correctly when the debugger was run
  3037.           with a relative path to the published module.
  3038.  
  3039.         - The #! line in the ZopeHTTPServer was hidden by the copyright
  3040.           statement and didn't have the right path.
  3041.  
  3042.         - A bug in pcgi_publisher.py caused file uploads larger than 1 MB
  3043.           to fail.
  3044.  
  3045.  
  3046.     Zope 1.9 beta 1
  3047.  
  3048.       Bugs fixed:
  3049.  
  3050.         - pcgi did not build correctly on Solaris 2.6
  3051.  
  3052.         - links in headers were broken when Zope was reached with
  3053.           /, as is the case when the ZopeHTTPServer is used.
  3054.  
  3055.         - Python sources used tabs and spaces for indentation, which
  3056.           made some people unhappy.
  3057.  
  3058.         - Copyright statements were missing or out of date.
  3059.         
  3060.         - Added better instructions for building and running Zope.
  3061.  
  3062.         - Added new Zope License and attribution information.
  3063.  
  3064.         - Merged BoboHTTPServer updates with ZopeHTTPServer. Including 
  3065.           socket changes to allow easier stopping and starting.
  3066.  
  3067.         - Shutting down the ZopeHTTPServer from the application
  3068.           caused an empty document to be returned.
  3069.  
  3070.         - The install scripts failed if run more than once when attempting
  3071.           to create a var directory.
  3072.  
  3073.       Features
  3074.  
  3075.         - Added (and old version of) the zlib module to make
  3076.           installation simpler.
  3077.  
  3078.         - Zope requires an access file.  The install scripts now create
  3079.           one.
  3080.  
  3081.  
  3082.     Zope 1.9 alpha 1 
  3083.  
  3084.       This was the inital Zope test release.
  3085.